Singleton ပုံစံသည်အတန်းတစ်ခုသာဖြစ်ရပ်တစ်ခုမျှသာရှိပြီးကမ္ဘာလုံးဆိုင်ရာလက်လှမ်းမီမှုအချက်များကိုထောက်ပံ့ပေးနိုင်သည့်ဘုံဒီဇိုင်းပုံစံဖြစ်သည်။ PHP တွင်, ရိုးရာ singleton mode အကောက်ခွန်သည်ငြိမ် variable များနှင့်နည်းလမ်းများအပေါ်မှီခိုနေရသည်။ သို့သော် PHP7 သည်အမည်မသိအတန်း၏အင်္ဂါရပ်အသစ်ကိုမိတ်ဆက်ခဲ့ပြီး Singleton Mode ကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်နှင့်တိကျသောအကောင်အထည်ဖော်မှုကိုပြုလုပ်ခဲ့သည်။
PHP7 မတိုင်မီ Singleton ပုံစံကိုများသောအားဖြင့်ပုဂ္ဂလိကဆောက်လုပ်ရေးနှင့် static getinstance method ကို အသုံးပြု. အကောင်အထည်ဖော်လေ့ရှိသည်။ ဤနည်းအားဖြင့် static method သည်အတန်း၏ဥပမာအားဖြင့်တစ်ကြိမ်သာဖန်တီးလိမ့်မည်ဟုသေချာစေသည်။ ဥပမာအားဖြင့်:
class Singleton {
private static $instance;
private function __construct() {}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
}
PHP7 မှမိတ်ဆက်ပေးသည့်အမည်မသိလူတန်းစားအင်္ဂါရပ်သည်၎င်းတို့အားအမည်မပေးဘဲအတန်းများ၏သာဓကများကိုဖန်တီးရန်ခွင့်ပြုသည်။ ဤအင်္ဂါရပ်နှင့်အတူကျွန်ုပ်တို့သည် Singleton mode ကိုအလွယ်တကူအကောင်အထည်ဖော်နိုင်သည်။ အမည်မသိအတန်းများကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်သာဓကများကိုသာဖန်တီးနိုင်ပြီး,
$instance = new class {
private function __construct() {}
public function getInstance() {
return $this;
}
};
အမည်မသိအတန်းများဖြင့်ကျွန်ုပ်တို့သည်ဥပမာအားဖြင့်အရာဝတ်ထုတစ်ခုကိုပြန်ပို့ရုံမျှသာမဟုတ်ဘဲချက်ချင်းပင်ထုံးစံအတိုင်းယုတ္တိဗေဒနှင့်စတင်လည်ပတ်မှုများထပ်မံထည့်သွင်းနိုင်သည်။ ဥပမာအားဖြင့်အောက်ပါကုဒ်များသည်အမည်မဖော်လိုသောအတန်းများမှတဆင့် logging လုပ်ရန် Singleton ပုံစံကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုပြသသည်။
interface Logger {
public function log($message);
}
class FileLogger implements Logger {
public function log($message) {
// ဤသည်ဖိုင်များမှမှတ်တမ်းများရေးသားခြင်း၏ယုတ္တိဗေဒကိုအကောင်အထည်ဖော်
}
}
$instance = new class extends FileLogger {
private function __construct() {}
public function getInstance() {
return $this;
}
};
$instance->log('This is a log message.');
PHP7 ၏အမည်မသိအတန်းများမှတစ်ဆင့်ကျွန်ုပ်တို့သည်ပိုမိုပြောင်းလွယ်ပြင်လွယ်ရှိပြီးလုံခြုံစိတ်ချရသော singleton ပုံစံကိုအကောင်အထည်ဖော်နိုင်သည်။ အမည်မသိအတန်းများသည် code ကိုရိုးရှင်းရုံသာမက code ကိုရိုးရှင်းစေရုံသာမက, Initialization စစ်ဆင်ရေးများ, ဤကောင်းကျိုးများသည် PHP Code ကိုပိုမိုတိကျပြီးထိန်းသိမ်းရန်လွယ်ကူပြီး၎င်းအား Code ၏ပြန်လည်သုံးသပ်ခြင်းနှင့်ဖတ်နိုင်မှုကိုလည်းတိုးတက်စေသည်။