Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion zum Verständnis des PHP-Singleton-Modus und Beispielcode

Eine kurze Diskussion zum Verständnis des PHP-Singleton-Modus und Beispielcode

little bottle
little bottlenach vorne
2019-04-19 16:05:502277Durchsuche

In diesem Artikel geht es um das Verständnis des PHP-Singleton-Modus. Interessierte Freunde sollten vorbeikommen und sich darüber informieren!

Warum Singleton-Muster verwenden?
Ich habe die Informationen online überprüft und aufgezeichnet, damit ich sie später überprüfen kann.
Der Singleton-Modus hat, wie der Name schon sagt, nur eine Instanz. Dies kann Speicher und Ressourcen sparen, vor allem weil jedes neue Objekt bei der Verwaltung der Datenbank durch PHP eine bestimmte Menge an Ressourcen verbraucht.

Wie wir alle wissen, ist die PHP-Sprache eine interpretierte Skriptsprache. Dieser Betriebsmechanismus ermöglicht die Wiederverwendung aller zugehörigen Ressourcen, nachdem jede PHP-Seite interpretiert und ausgeführt wurde. 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 existiert beispielsweise immer ein Singleton Die Variablen sind seitenübergreifend

, was diese Instanz im Anwendungslebenszyklus wirklich einzigartig machen kann. In PHP sind jedoch alle Variablen, unabhängig davon, ob sie globale Variablen oder statische Mitglieder der Klasse sind, auf Seitenebene. Jedes Mal, wenn die Seite ausgeführt wird, wird ein neues Objekt neu erstellt und nach der Ausführung der Seite gelöscht. Es scheint, dass PHP Der Singleton-Modus ist bedeutungslos, daher denke ich, dass der PHP-Singleton-Modus nur dann sehr sinnvoll ist, wenn mehrere Anwendungsszenarien auftreten und dieselbe Objektressource gemeinsam genutzt werden muss, wenn eine einzelne Anforderung auf Seitenebene

auftritt.

Ohne weitere Umschweife beginnen wir mit dem Code

<span style="font-size: 14px;"><span style="font-size: 12px;"><?php</span><br/><br/><span style="font-size: 12px;">class User</span><br/><span style="font-size: 12px;">{</span><br/><span style="font-size: 12px;">    /*</span><br/><span style="font-size: 12px;">     * 1、创建一个存放对象的私有化静态变量</span><br/><span style="font-size: 12px;">     * 2、私有化克隆方法</span><br/><span style="font-size: 12px;">     * 3、私有化构造方法</span><br/><span style="font-size: 12px;">     * 4、创建实例化对象的唯一入口</span><br/><span style="font-size: 12px;">     *</span><br/><span style="font-size: 12px;">     * **/</span><br/><span style="font-size: 12px;">    private static $_instance = &#39;&#39;;</span><br/><span style="font-size: 12px;">    private function __clone(){}</span><br/><span style="font-size: 12px;">    private function __construct(){}</span><br/><span style="font-size: 12px;">    static public function getInstance()</span><br/><span style="font-size: 12px;">    {</span><br/><span style="font-size: 12px;">        if(is_null(self::$_instance) || isset(self::$_instance)){</span><br/><span style="font-size: 12px;">            self::$_instance = new User();</span><br/><span style="font-size: 12px;">        }</span><br/><span style="font-size: 12px;">        return self::$_instance;</span><br/><span style="font-size: 12px;">    }</span><br/><span style="font-size: 12px;">    public function getIp()</span><br/><span style="font-size: 12px;">    {</span><br/><span style="font-size: 12px;">        return $_SERVER[&#39;SERVER_ADDR&#39;];</span><br/><span style="font-size: 12px;">    }</span><br/><span style="font-size: 12px;">}</span><br/><span style="font-size: 12px;">$op =  User::getInstance();</span><br/><span style="font-size: 12px;">echo $op->getIp();</span><br/><br/></span>

Verwandte Tutorials: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion zum Verständnis des PHP-Singleton-Modus und Beispielcode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen