php singleton
2.0.1
การใช้งานแบบง่าย ๆ ของรูปแบบ Singleton (Anti-)
เพราะมันสามารถแก้ปัญหาการหยุดชะงักและปัญหาอื่น ๆ ดูตัวอย่างนี้:
class UnsafeFileAppender
{
const MY_FILE = ' /tmp/my.file ' ;
private $ handle = null ;
public function __construct ()
{
$ this -> handle = fopen ( self :: MY_FILE , ' a ' );
flock ( $ this -> handle , LOCK_EX );
}
public function __destruct ()
{
flock ( $ this -> handle , LOCK_UN );
fclose ( $ this -> handle );
}
}คุณไม่สามารถสร้างสองอินสแตนซ์ในเวลาเดียวกันด้วยรหัสนี้ ...
$ first = new UnsafeFileAppender (); // OK
$ second = new UnsafeFileAppender (); // Deadlock... ดังนั้นเพียงแค่แปลงเป็นซิงเกิล ...
use PetrKnap Singleton SingletonInterface ;
use PetrKnap Singleton SingletonTrait ;
class SafeFileAppender extends UnsafeFileAppender implements SingletonInterface
{
use SingletonTrait;
private function __construct ()
{
parent :: __construct ();
}
}... และใช้อินสแตนซ์เดียวกันสองครั้ง
$ first = SafeFileAppender:: getInstance (); // OK
$ second = SafeFileAppender:: getInstance (); // OK Run composer require petrknap/singleton เพื่อติดตั้ง คุณสามารถสนับสนุนโครงการนี้ผ่านการบริจาค โครงการได้รับใบอนุญาตภายใต้เงื่อนไขของ LGPL-3.0-or-later