با سلام به تمام دوستان و استاد عزیزم
مشکلم این است که داخل کلاسی که از یک کلاس دیگه ای extends شده نمیشه از اون کلاسی که extends شده کلمه this رو استفاده کرد. کد پایین رو ببینید منظورم رو متوجه میشوید.
// file name is parent-file.php
class myParent {
protected function functionName(){
// some code
}
}
// another file
require_once ('parent-file.php');
class myChild extends myParent {
public function useFunction(){
$this->functionName(); // not work
// But
myParent::functionName(); // is ok and work
}
}
اینجا myParent نقش Admin رو در مثال دوره رو داره.
همون که مشاهده کردید myParent رو به درستی میشناسه ولی this رو نمیشناسه و یک ارور میده که من this رو نمیشناسم.
سلام نمیدونم هدف شما از این برنامه چی هست
ولی من الان کد شمارو نوشتم به خطایی سینتکس برخورد نکردم فقط
فایل دوم که اسمش another file گذاشتید ادیتور ویژوال استودیو کد ایراد گرفت که همچنین نام دهی اشتباه هست یک اسم دیگه قرار دادم خطای سینتکس نگرفت
موفق باشید
سلام دوست عزیز ؛
در بحث شی گرایی کلاس ها اینطوری شیوه درستی برای ارث بری از یک کلاس نیست .
شما باید برای کلاس والد یک namespace تعریف کنی و در کلاس فرزند اون namespace رو use کنی تا بتونه بشناسه .
سلام
برای دوست اولمون میخام بگم که ارور داره منم دلیلش رو نمیدونم و منظور از another file همون فایل دیگر است که منظور دقیقم این بود که توی یک فایل دیگه اون کد هارو نوشتم
برای دوست دوم هم میخام بگم که name space ها همشون رو درست نوشتم و اصلا ایرادی نداره و حتی الان هم که داشتم کد مینوشتم توی خود کلاس هم نتونسم از this استفاده بکنم مثل:
class myClass {
protected function run() {
// some code
}
protected functino otherRun() {
$this->run(); // have an ERROR
// but
myClass::run(); // is ok
}
}
واقعا دلیلش رو نمیدونم و ذهنم رو درگیر کرده.
حالا استاد هم بیاد یه جوابی بده برای این مشکلمون تا نظر ایشون رو هم بدونیم
با سلام خدمت شما همراه عزیز
https://stackoverflow.com/questions/29010937/access-this-in-extended-class
لینک بالا کمکتون میکنه
با سلام خدمت شما
برای من اون خطایی که می فرمایید نداشت ولی خب چیزی هم چاپ نشد
امیدوارم که استاد لینکی که قرار دادن مشکلتون حل بشه
موفق باشید
سلام
استاد لینکی که قرار دادین رو نگاه کردم اون همون راه حلی که من انجام میدم رو میگه که همون به جای استفاده از this$ از اسم اون کلاس و دو تا دو نقطه استفاده میکنه. ()ClassName::methodeName
فقط میخام بدونم چرا اجازه استفاده از this$ رو به من نمیده
رفتم یه فولدر جدید اینجاد کردم و این رو دوباره امتحان کردم اونجا هم اجرا نشد. جایی که تعجب میکنم اون جایی هست که توی کلاس هم این اجازه رو به من نمیده که از this$ استفاده بکنم :(
Fatal error: Uncaught Error: Using $this when not in object context
ارور دقیقا این هستش بقیه ارور هم به اون جایی که از this استفاده کردم اشاره میکنه.
توی لینک هم گفته باید از روش استانیک استفاده کنید this