روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۷ Mahdi
\"Undefined array key \"date
جامعه پی اچ پی ایجاد شده در ۰۹ شهریور ۱۴۰۱

سلام استاد

مشکل این کد چیه که به ارور

"Undefined array key "date میخوره؟

class Set
{
    private $date;
    public function __get($property)
    {
        return $this->date[$property];
    }
    public function __set($property, $value)
    {
        $this->date[$property] = $value;
    }
}
$Set = new Set;
$Set->name = "ali";
$Set->family = "Avand";
print_r($Set->date);

و کلاس پایینی یک کلاس دیگه به شکل بالاس که تعریف کردم و بدون خطا اجرا میشه

class Set
{
    private $id = 5;
    private $date;
    public function __get($property)
    {
        return $this->date[$property];
    }
    public function __set($property, $value)
    {
        $this->date[$property] = $value;
        // echo "in set() : $property => $value\\n";
    }
}
$S = new Set;
$S->name = "ali";
$S->family = "Avand";
// print_r($S->date);
var_dump($S);
print_r($Set->date);

برا استاد اجرا میشه برای من خطا میزنه

Mahdi ۰۹ شهریور ۱۴۰۱، ۰۸:۰۷

استاد ی سوال دیگه هم داشتم

اینجا برا متود گت از کیبورد self استفاده کردم

و نتیجه تغیری نکرد

public function __get($property)
    {
        //return $this->date[$property];
        return self::class[$property];
    }
Mahdi ۰۹ شهریور ۱۴۰۱، ۰۸:۱۶

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

شما دارید کل پراپرتی date رو صدا میزنید که وجود داره و private هست برای همین هم هست که نتیجه ای پردا نمیکنید

شما داخل getter گفتید مقداری که صدا میزنید رو بره از توی کلید پراپرتی date پیدا کنید به عنوان مثال کد زیر باید براتون کار کنه

print_r($Set->name);

موفق باشید ?

محمد گازری ۰۹ شهریور ۱۴۰۱، ۰۸:۵۴

بله استاد دقیقا همین خط

print_r($Set->name);

به ارور "Undefined array key "date

  میخوره

Mahdi ۰۹ شهریور ۱۴۰۱، ۰۹:۲۶

کد بدون مشکل کار میکنه

0da5-Screen Shot 2022-08-31 at 14.46.59.png

محمد گازری ۰۹ شهریور ۱۴۰۱، ۱۰:۱۷

استاد دقیقه 34 استاد اوند

print_r($Set->date);

به صورت ارایه ران میکنه

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

Mahdi ۰۹ شهریور ۱۴۰۱، ۱۰:۳۳

کد دکتر رو ببین محمدرضا جان

e10d-Screen Shot 2022-08-31 at 15.12.06.png

بهترین پاسخ
محمد گازری ۰۹ شهریور ۱۴۰۱، ۱۰:۴۳