Singleton-Entwurfsmuster in PHP5
Die Implementierung des Singleton-Entwurfsmusters in PHP5 erfordert das Erstellen einer Klasse, die unabhängig von der Art und Weise nur eine Instanz haben kann oft wird es instanziiert. Dies wird erreicht, indem eine statische Variable zum Speichern der einzelnen Instanz verwendet und das Klonen oder Deserialisierung verhindert wird.
Hier ist ein Beispiel für die Erstellung einer Singleton-Klasse in PHP5:
final class UserFactory { private static $inst = null; // Prevent cloning and de-serializing private function __clone(){} private function __wakeup(){} /** * Call this method to get singleton * * @return UserFactory */ public static function Instance() { if self::$inst === null) { self::$inst = new UserFactory(); } return self::$inst; } /** * Private ctor so nobody else can instantiate it * */ private function __construct() { } }
Dies Die Implementierung verwendet eine statische Variable $inst, um die einzelne Instanz der UserFactory-Klasse zu speichern. Die Methode Instance() dient als Singleton-Getter. Wenn $inst null ist, wird eine neue Instanz erstellt und $inst zugewiesen.
Um diese Singleton-Klasse zu verwenden, rufen Sie einfach die Methode Instance() auf, um die einzelne Instanz zu erhalten:
$fact = UserFactory::Instance(); $fact2 = UserFactory::Instance();
Der Vergleich von $fact und $fact2 ergibt „true“ und bestätigt, dass es sich um dieselbe Instanz handelt.
Es wird jedoch versucht, ein neues UserFactory-Objekt direkt zu instanziieren Die Verwendung von new UserFactory() löst einen Fehler aus, da der Konstruktor privat gemacht wird. Die einzige Möglichkeit, eine Instanz der UserFactory-Klasse zu erhalten, ist die Methode Instance().
Das obige ist der detaillierte Inhalt vonWie implementiert man das Singleton-Entwurfsmuster in PHP5?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!