Heim  >  Artikel  >  Backend-Entwicklung  >  Warum sollte PHP den Singleton-Modus verwenden?

Warum sollte PHP den Singleton-Modus verwenden?

黄舟
黄舟Original
2017-09-06 09:43:362529Durchsuche

Der Grund, warum PHP den Singleton-Modus verwendet: Bei der objektorientierten Entwicklung kann die Verwendung des Singleton-Modus übermäßige neue Vorgänge vermeiden, die viele Ressourcen verbrauchen. Der Singleton-Modus kann bestimmte Konfigurationsinformationen global über eine Klasse steuern.

Warum sollte PHP den Singleton-Modus verwenden?

1. Was ist das Singleton-Muster?

1. Bedeutung

Als Objekterstellungsmodus stellt der Singleton-Modus sicher, dass eine bestimmte Klasse nur eine Instanz hat, und er instanziiert sich selbst und stellt diese bereit Geben Sie dieses Beispiel an. Es erstellt keine Kopie der Instanz, sondern gibt einen Verweis auf die intern in der Singleton-Klasse gespeicherte Instanz zurück.

Die Anwendung von PHP findet hauptsächlich in Datenbankanwendungen statt, daher gibt es in einer Anwendung eine große Anzahl von Datenbankoperationen. Wenn Sie den Singleton-Modus verwenden, können Sie Folgendes vermeiden: große Menge an Ressourcen, die durch neue Operationen verbraucht werden. Wenn im System eine Klasse benötigt wird, um bestimmte Konfigurationsinformationen global zu steuern, kann diese einfach mithilfe des Singleton-Musters implementiert werden.

Drei Schlüsselpunkte des Singleton-Musters:

(1) Eine statische Mitgliedsvariable, die die einzige Instanz der Klasse enthält, ist erforderlich:

private static $_instance;

(2). Konstruktoren und Klonfunktionen müssen als privat deklariert werden, um zu verhindern, dass externe Programme neue Klassen erstellen und dadurch die Bedeutung des Singleton-Modus verlieren:

private function __construct()   
{   
    $this->_db = pg_connect('xxxx');  
}   
private function __clone()  
{  
}//覆盖__clone()方法,禁止克隆

(3). ). A muss bereitgestellt werden. Greifen Sie auf die öffentliche statische Methode dieser Instanz zu (normalerweise die getInstance-Methode), wodurch ein Verweis auf die eindeutige Instanz zurückgegeben wird.

public static function getInstance()    
{    
    if(! (self::$_instance instanceof self) )   
    {    
        self::$_instance = new self();    
    }  
    return self::$_instance;    
  
}

2. Warum das Singleton-Muster verwenden?

Die meisten Menschen verstehen die Verwendung des Singleton-Musters wörtlich und denken, dass es Systemressourcen spart und wiederholte Instanziierung vermeidet. Es handelt sich um eine „Familienplanung“.

PHP löscht bei jeder Ausführung der Seite alle Ressourcen aus dem Speicher. Daher muss der Singleton in PHP tatsächlich bei jeder Ausführung neu instanziiert werden, wodurch die Bedeutung einer wiederholten Instanziierung des Singletons verloren geht.

Allein unter diesem Aspekt ist der Singleton von PHP tatsächlich etwas enttäuschend. Aber hat ein Singleton nur diese Funktion und Anwendung? Die Antwort ist nein, werfen wir einen Blick darauf.

Die Anwendung von PHP erfolgt hauptsächlich in Datenbankanwendungen, daher gibt es bei der objektorientierten Entwicklung eine große Anzahl von Datenbankoperationen (Unsinn), wenn Sie den Singleton verwenden Im Modus können Sie eine große Anzahl von Vorgängen vermeiden, die durch den neuen Vorgang verbraucht werden.

Wenn eine Klasse benötigt wird, um bestimmte Konfigurationsinformationen im System global zu steuern, kann sie einfach mithilfe des Singleton-Musters implementiert werden. Dies finden Sie im FrontController-Teil von zend Framework.

In einer Seitenanforderung ist das Debuggen einfach, da der gesamte Code (z. B. Datenbankoperationsklasse db) in einer Klasse konzentriert ist und Protokolle ausgegeben werden, um var_dumping überall zu vermeiden .

1. Nachteile von PHP:

Dieser Betriebsmechanismus sorgt dafür, dass alle PHP-Seiten interpretiert und ausgeführt werden.

Mit anderen Worten, PHP hat keine Möglichkeit, ein Objekt auf Sprachebene im Speicher zu speichern. Dies unterscheidet sich von kompilierten Typen wie asp.net und Java. In Java wird dies beispielsweise immer der Fall sein Im gesamten Lebenszyklus des Programms sind Variablen seitenübergreifend vorhanden, und diese Instanz kann im Lebenszyklus der Anwendung wirklich einzigartig sein.

Allerdings sind in PHP alle Variablen, egal ob es sich um globale Variablen oder statische Mitglieder der Klasse handelt, auf Seitenebene. Jedes Mal, wenn die Seite ausgeführt wird, wird ein neues Objekt wiederhergestellt nach der Ausführung der Seite wiederhergestellt werden. Nach dem Löschen scheint der PHP-Singleton-Modus keine Bedeutung zu haben.

Ich denke daher, dass der PHP-Singleton-Modus nur dann sehr sinnvoll ist, wenn mehrere Anwendungsszenarien in einer einzelnen Anforderung auf Seitenebene auftreten und dieselbe Objektressource gemeinsam nutzen müssen.

2. Anwendungsszenarien des Singleton-Modus in PHP:

(1) Interaktion zwischen Anwendung und Datenbank

Wird in einer Anwendung vorhanden sein B. das Herstellen einer Verbindung zur Datenbank über ein Datenbankhandle, kann durch die Verwendung des Singleton-Modus eine große Anzahl neuer Vorgänge vermieden werden, da jeder neue Vorgang Speicherressourcen und Systemressourcen verbraucht.

(2) Konfigurationsinformationen steuern

Wenn eine Klasse benötigt wird, um bestimmte Konfigurationsinformationen im System global zu steuern, kann sie einfach mithilfe des Singleton-Modus implementiert werden.

Für weitere verwandte Informationen besuchen Sie bitte die PHP-Chinese-Website! !

Das obige ist der detaillierte Inhalt vonWarum sollte PHP den Singleton-Modus verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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