Moshkele Dar Nasbe Noskheyeh Jadide Xampp

salam,

az vaghty xampp jadido nasb kardam, hameyeh projeham ba moshkel movaje shode, va hamash error ahyeh mokhtalef migiram, tanzimateh khasi dar version jadid xampp bayad dar php.ini ezafe ya taghir kone??

masalan error:

Non-static method

hala man ino dorost kardam to php.ini vali aya barayeh call kardan hatman bayad opjectesho besazam??? yani nemitonam mostaghim xxx::yyy begam??

mamnon az javabeton

[right][rtl][font="Tahoma"]

سلام

ظاهرا با آپدیت xamp ورژن PHP شما هم ارتقا پیدا کرده و نسخه های جدید تر برخی از مواردی که نسخه های پیشین چشم پوشی میکردند رو سخت گیری بیشتری دارند

کلا اگر ارور شما fatal error نباشه، یعنی notice یا warning باشه و فریمورک هم در حالت debug mode نباشه، میتونید تنظیمات PHP رو تغییر بدید تا این ارور ها رو نمایش نده. اما کلا چه بهتر که ارورو ها رو ببینید و الان رفع کنید تا در بروزرسانی های بعدی با مشکل مواجه نشید

در مورد این نکته non-static method هم، همینطور که ارور میگه، وقتی یک متد رو تعریف میکنید و قصد استفاده استاتیک از اون رو دارید باید صریحا در تعریف متد اعلام کنید:

[/rtl][/right]




public static function staticMethod(){

  ...

  return  ;

}



[right][rtl]

و توجه داشته باشید که در توابعی که استاتیک تعریف میشند، دیگه متغیر $this معنی نداره و نمیشه از اون استفاده کرد. در عوض میشه از self استفاده کرد اگر نیاز به دسترسی به توابع یا پارامترهای همین کلاس رو دارید

داخل پرانتر اینکه میشه property استاتیک هم تعریف کرد و اون هم از همین قوانین تبعیت خواهد کرد.

به این ترتیب به روش زیر میتونید این متد ها یا property ها رو صدا بزنید

[/rtl][/right]




ClassName::staticMethod();

ClassName::$staticProperty;



[/font]

salam,

mamnon az javabet,

hala ye soali dahstam, alan proje ro man bastam va barayeh mesal:

man ye class A daram ye class B

dar class a man chandin function daram ke hamashon public function hastesh,

hala mikham az class B beshon call bedam az in method man estefade kardam A::FunctionName va object azash nasakhtam,

hala shoma pishnahad mikoni ke man kole proje ro hame jahaiee ke omadam in jori estefade kardam hameyeh function ha ro be public static function taghir bedam?? ya object besazam dar jahaiee ke azash estefade kardam?

ya hamin jori beram jeloo va error ha ro to php.ini off konam?

bazam mamnon

[right][rtl][font="Tahoma"]

راستش دادن یک پاسخ کلی به سوال شما کار خیلی سختیه و باید دید که هر تابع چه وظیفه ای انجام میده و نیاز هست استاتیک باشه یا که خیر

بطور کلی، زمانی متد و پراپرتی های استاتیک مفید هستند که قصد داشته باشیم اطلاعاتی رو بین اشیا یک کلاس به اشتراک بگذاریم، یا رفتاری که مرتبط به یک کلاس، اما مستقل از ماهیت اشیا اون هست رو پیاده سازی کنیم

حالا شما ببین از لحاظ معنایی توابع شما در این چارجوب هستند یا خیر

البته جدای این مطلب، همین که شما تا الان به صورت Class::functionName() از توابع استفاده میکردی، بطور ضمنی معنی اش این هست که شما توابع رو منطبق با کارکرد استاتیک نوشتید و الان کافیه که کلمه static رو هم قید کنی در تعریف

داخل پرانتز، من و بقیه دوستان ممنون میشیم اگر به زبان فارسی تایپ بفرمایید در فروم، ممنون :)

[/font][/rtl][/right]