• 1400/02/13

fatal error برای استفاده this$ در داخل کلاس دیگر یا همون کلاس :

با سلام به تمام دوستان و استاد عزیزم

 

مشکلم این است که داخل کلاسی که از یک کلاس دیگه ای 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 رو نمیشناسم.

  • 1400/02/14
  • ساعت 00:45

سلام نمیدونم هدف شما از این برنامه چی هست

ولی من الان کد شمارو نوشتم به خطایی سینتکس برخورد نکردم فقط

فایل دوم که اسمش another file گذاشتید ادیتور ویژوال استودیو کد ایراد گرفت که همچنین نام دهی اشتباه هست یک اسم دیگه قرار دادم خطای سینتکس نگرفت

موفق باشید


  • 1400/02/15
  • ساعت 05:39

سلام دوست عزیز ؛

در بحث شی گرایی کلاس ها اینطوری شیوه درستی برای ارث بری از یک کلاس نیست .

شما باید برای کلاس والد یک namespace تعریف کنی و در کلاس فرزند اون namespace رو use کنی تا بتونه بشناسه .


  • 1400/02/15
  • ساعت 10:21

سلام

برای دوست اولمون میخام بگم که ارور داره منم دلیلش رو نمیدونم و منظور از 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
	}

}

واقعا دلیلش رو نمیدونم و ذهنم رو درگیر کرده.

حالا استاد هم بیاد یه جوابی بده برای این مشکلمون تا نظر ایشون رو هم بدونیم


  • 1400/02/15
  • ساعت 14:44

با سلام خدمت شما همراه عزیز

 

https://stackoverflow.com/questions/29010937/access-this-in-extended-class

 

 

لینک بالا کمکتون میکنه


  • 1400/02/16
  • ساعت 02:55

با سلام خدمت شما

برای من اون خطایی که می فرمایید نداشت ولی خب چیزی هم چاپ نشد 

امیدوارم که استاد لینکی که قرار دادن مشکلتون حل بشه 

موفق باشید


  • 1400/02/16
  • ساعت 09:18

سلام

استاد لینکی که قرار دادین رو نگاه کردم اون همون راه حلی که من انجام میدم رو میگه که همون به جای استفاده از this$ از اسم اون کلاس و دو تا دو نقطه استفاده میکنه. ()ClassName::methodeName

فقط میخام بدونم چرا اجازه استفاده از this$ رو به من نمیده

رفتم یه فولدر جدید اینجاد کردم و این رو دوباره امتحان کردم اونجا هم اجرا نشد. جایی که تعجب میکنم اون جایی هست که توی کلاس هم این اجازه رو به من نمیده که از this$ استفاده بکنم :(

Fatal error: Uncaught Error: Using $this when not in object context 

ارور دقیقا این هستش بقیه ارور هم به اون جایی که از this استفاده کردم اشاره میکنه.

 


  • 1400/02/17
  • ساعت 00:57

توی لینک هم گفته باید از روش استانیک استفاده کنید this


logo-samandehi