روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ سید جمال جلالی
ابهام trait Singleton ???
جامعه پی اچ پی ایجاد شده در ۲۳ شهریور ۱۴۰۱

سلام

در خصوص trait که تعریف شد

trait Singleton{
    private static $instance;
    public static function getInstance()
    {
        if(!(self::$instance instanceof self)){
            self::$instance=new self;
        }
        return self::$instance;
    }
}   

وقتی ما مثلا از کلاس موبایل میخوایم یه شی بسازیم

$mob = Mobile::getInstance();

من اینجا رو درک نمیکنم پارامتر self::$instance مگه نباید نشان دهنده یک آبجکت باشه ؟؟؟.....instance$ رو که ما هیچ جا مقدار دهی نکردیم ؟؟؟

سلام جمال عزیز

شرط میگه اگر self::$instance از قبل مقدارش از شی کلاس فعلیمون نبود بیا یه شی ازش ایجاد کن

در آخر هم همون self::$instance رو بر میگردونه

ما دیگه از این کلاس شی ایجاد نمیکنیم بلکه به شکل static میایم و متد getInstance رو صدا میزنیم

موفق باشید ?

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

اگه از قبل یه آبجکتی از این کلاس ساخته شده باشه و مثلا داخل متغییر mobObj$ ذخیره شده باشه و حالا ما میایم ()Mobile::getInstance رو صدا میزنیم این چطور تشخیص میده قبلا آبجکت mobObj ساخته شده ؟؟؟؟ ...کلا برام نامفهومه ؟؟

سید جمال جلالی ۲۳ شهریور ۱۴۰۱، ۱۵:۱۹

آقا بیشتر بررسی کردم فهمیدم چی شد....به قول استاد حلللللله

ممنون

سید جمال جلالی ۲۳ شهریور ۱۴۰۱، ۱۵:۳۰