دریافت member-variable از کلاس والد....
۱۰ اردیبهشت ۱۳۸۸ ساعت ۱۲:۵۴
پی اچ پی
یک نکته کوچیک از کلاسهای PHP
جدیدا متوجه شدم که اگر یک کلاسی، یک کلاس دیگه رو extend کنه، نمی تونه Propertyهای کلاس والد که static نیستند رو مستقیما بگیره. یعنی اینجوری جواب نمیده:
class childClass extends parentClass {
.....
$a = parent::memberVariable;
.....
}
توی اینترنت گشتم چیزی جالبی پیدا نکردم ولی خودم یه روش باحال کشف کردم. برای گرفتن Property کلاس والد میشه یک متد توی کلاس والد ایجاد کرد که بیاد Property رو return کنه. مثل این:
class parentClass {
.....
function getProperty($property)
{
return $this->$property;
}
.....
}
حالا توی کلاس پایین دستی میتونید هر مشخصه ای رو از کلاس والد بگیرید (البته با مقدار کنونی)
class childClass extends parentClass {
.....
$a = parent::getProperty("memberVariable");
// $a equals to parent::memberVariable
.....
}
دلیل اینکه چنین قابلیتی تعریف نشده کاملا مشخصه. Propertyهای یک کلاس اگر static نباشند، بسته به متدهای کلاس تغییر می کنند و نمیشه با قطعیت مقدار نهایی ازشون گرفت.


Google Chrome
تو چی فکر می کنی؟