Heim > Backend-Entwicklung > PHP-Tutorial > Wie implementiert man das Singleton-Entwurfsmuster in PHP5?

Wie implementiert man das Singleton-Entwurfsmuster in PHP5?

DDD
Freigeben: 2024-12-13 03:08:08
Original
611 Leute haben es durchsucht

How to Implement the Singleton Design Pattern in PHP5?

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()
    {

    }
}
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage