လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP Singleton ပုံစံဒီဇိုင်းပုံစံ - အခြေခံမူများနှင့်အကောင်အထည်ဖော်ခြင်းနည်းလမ်းများအသေးစိတ်ရှင်းလင်းချက်

PHP Singleton ပုံစံဒီဇိုင်းပုံစံ - အခြေခံမူများနှင့်အကောင်အထည်ဖော်ခြင်းနည်းလမ်းများအသေးစိတ်ရှင်းလင်းချက်

gitbox 2025-07-02

မိတ်ဆက်ပေး

PHP ရှိ Singleton ပုံစံသည် Activity တစ်ခုသာဖန်တီးနိုင်ပြီးဥပမာအားဖြင့်ကမ္ဘာလုံးဆိုင်ရာ 0 င်ရောက်နိုင်သည့်နေရာကိုပေးနိုင်သည့်ကျယ်ပြန့်စွာအသုံးပြုထားသောဒီဇိုင်းပုံစံဖြစ်သည်။ ဤပုံစံသည်များသောအားဖြင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုများစသည့်အရင်းအမြစ်များ, သစ်ခုတ်သမားများစသည့်အရင်းအမြစ်များကိုမျှဝေရန်လိုအပ်သောအတန်းများတွင်အသုံးပြုလေ့ရှိသည်။ ဤဆောင်းပါးသည်အခြေခံမူများနှင့်အကောင်အထည်ဖော်မှုနည်းလမ်းများကိုမိတ်ဆက်ပေးလိမ့်မည်။

အခေြခံမူ

Singleton ပုံစံ၏အဓိကအယူအဆမှာ - ထူးခြားသောဥပမာတစ်ခုကိုသိမ်းဆည်းရန်အတန်းထဲတွင်ပုဂ္ဂလိကငြိမ်ပစ္စည်းဥစ်စာပစ္စည်းများကို ဖန်တီး. ဥပမာအားဖြင့်အများပြည်သူငြိမ်သက်သည့်နည်းလမ်းတစ်ခုပေးပါ။ မည်သည့်နည်းကိုမဆိုဥပမာအားဖြင့်မည်သည့်နေရာတွင်ရှိသည်ကိုမည်သည့်နေရာတွင်မဆိုပါစေတူညီသောအရာဝတ်ထုကိုအမြဲပြန်လာသည်။ ၎င်းသည်အတန်းအစားတစ်ခုတည်းသာသာရှိကြောင်းနှင့်ကမ္ဘာလုံးဆိုင်ရာ 0 င်ရောက်နိုင်သည့်နေရာကိုပေးသည်။

ပြီးမေြာက်စေ

ပုံမှန် singleton mode ကို

သာမန် PPP ကုဒ်နမူနာတစ်ခုမှာသာမန် Singleton ပုံစံကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုပြသသည့်ရိုးရှင်းသော PHP Code နမူနာတစ်ခုရှိသည်။

 class Singleton {<br>    private static $instance;<br><br>    private function __construct() {<br>        // ပုဂ္ဂလိကဆောက်လုပ်ရေး,တိုက်ရိုက်ကျမ်းပိုဒ်တားဆီးnewဥပမာတစ်ခုဖန်တီးရန်<br>    }<br><br>    public static function getInstance() {<br>        if (!self::$instance) {<br>            self::$instance = new Singleton();<br>        }<br>        return self::$instance;<br>    }<br>}<br>$instance1 = Singleton::getInstance();<br>$instance2 = Singleton::getInstance();<br>var_dump($instance1 === $instance2); // ထုတ်လုပ်ခြင်း: bool(true)

ဤဥပမာတွင် Singleton Class တွင်ထူးခြားသောဥပမာတစ်ခုရရှိရန်ပုဂ္ဂလိကတည်ငြိမ်သောအိမ်ခြံမြေအကျိုးဆောင်များပါ 0 င်ပြီးဤဥပမာအားဖြင့်အများပြည်သူတည်ငြိမ်သော static method get getinstance () ကိုထောက်ပံ့ပေးသည်။ အကယ်. ဒေါ်လာဥပမာအားဖြင့်အချည်းနှီးဖြစ်လျှင် Singleton ဥပမာအသစ်ကိုဖန်တီးသည်။ သို့မဟုတ်ပါကလက်ရှိဥပမာအားဖြင့်တိုက်ရိုက်ပြန်လာသည်။

Thread-Safe Singleton Mode

အကယ်. သင်သည် Multipreaded ပတ်ဝန်းကျင်တွင် Singleton ပုံစံကိုအသုံးပြုပါကသာဓကများစွာကိုဖန်တီးနိုင်သည်။ ဤအရာကိုရှောင်ရှားရန်သင်တစ် ဦး တည်းသာလျှင်သာလျှင်သာဓကတစ်ခုဖန်တီးနိုင်ရန်အတွက် GetINSTANCE () နည်းလမ်းတွင်ချည်မျှင်ကိုပေါင်းထည့်နိုင်သည်။ ဤတွင် Thread-Safe Singleton ပုံစံ၏ဥပမာ၏ဥပမာတစ်ခုမှာ -

 class Singleton {<br>    private static $instance;<br><br>    private function __construct() {<br>        // ပုဂ္ဂလိကဆောက်လုပ်ရေး,တိုက်ရိုက်ကျမ်းပိုဒ်တားဆီးnewဥပမာတစ်ခုဖန်တီးရန်<br>    }<br><br>    public static function getInstance() {<br>        if (!self::$instance) {<br>            $lock = true;<br>            if ($lock) {<br>                usleep(100); // Simulate သော့ခတ်စစ်ဆင်ရေး<br>            }<br>            if (!self::$instance) {<br>                self::$instance = new Singleton();<br>            }<br>            $lock = false; // သော့ခတ်ကိုလွှတ်လိုက်ပါ<br>        }<br>        return self::$instance;<br>    }<br>}<br>$instance1 = Singleton::getInstance();<br>$instance2 = Singleton::getInstance();<br>var_dump($instance1 === $instance2); // ထုတ်လုပ်ခြင်း: bool(true)

ဤကုဒ်တွင်သော့ခတ်ထားသောယန္တရားကိုမထီမဲ့မြင်ပြုခြင်းအားဖြင့်ဥပမာတစ်ခုဖန်တီးသည့်အခါဥပမာတစ်ခုဖန်တီးသောအခါ,

အကျဉ်းချုပ်

Singleton ပုံစံသည်အတန်းတစ်ခုတွင်သာဓကတစ်ခုသာရှိကြောင်းသေချာစေသည့်အသုံးများသောဒီဇိုင်းပုံစံဖြစ်သည်။ ဤဆောင်းပါးသည် Singleton Mode ၏အခြေခံနိယာမများကိုမိတ်ဆက်ပေးပြီး PHP တွင်ပုံမှန် Singleton Mode နှင့် Thread-Safe Singleton Mode ကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုပြသည်။ Singleton Mode ကိုအသုံးပြုခြင်းအားဖြင့်အရင်းအမြစ်များကိုထူးခြားမှုနှင့်ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်မျှဝေခြင်းအရင်းအမြစ်များကိုထိရောက်စွာစီမံခန့်ခွဲနိုင်သည်။ သို့သော် Singleton Mode ကိုအသုံးပြုသောအခါ၎င်းသည် Code Testability နှင့် SAVICAITIAME အပေါ်သက်ရောက်မှုကိုအသေအချာစဉ်းစားရန်လိုအပ်သည်။