Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist ein PHP-Singleton-Muster?

Was ist ein PHP-Singleton-Muster?

WBOY
WBOYOriginal
2016-12-01 00:01:161094Durchsuche

Antwortinhalt:

Tatsächlich bedeutet das Singleton-Modell, um es ganz klar auszudrücken, dass eine Klasse nur einmal instanziiert werden kann. Aber wie machen wir so viel Aufhebens um diese Instanziierung? Tatsächlich ist die magische Methode __construct() ein Durchbruch. Diese Methode bedeutet, dass diese Methode automatisch ausgeführt wird, wenn die Klasse instanziiert wird. Welchen Effekt hat es dann, wenn ich diese Methode geschützt oder privat mache?
<code class="language-text"><?php
class test{

	protected function __construct(){

	}
}

$test = new test();
?>
</code>
<code class="language-php"><span class="x">static function getInstance($class, $param = array())</span>
<span class="x">{</span>
<span class="x">    if (!isset($obj[$class])) {</span>
<span class="x">        $obj[$class] = new $class($param);</span>
<span class="x">    }</span>
<span class="x">    return $obj[$class];</span>
<span class="x">}</span>
<span class="x">在实例化一个类时,先判断是否有这个类的实例,如果有就不实例化,反之就实例化一个</span>
</code>
Großartig, der Gastgeber ist unbesiegbar Reden ist billig, zeig dir meinen Code.

Die einfachste PHP-Singleton-Modus-Klasse:
<code class="language-php"><span class="x">class TestInstance</span>
<span class="x">{</span>
<span class="x">    public static $_instance = null;</span>

<span class="x">    //为了防止外部new这个类,所以构造方法用protected,这是单例模式的关键之处</span>
<span class="x">    protected function __Construct()</span>
<span class="x">    {</span>
<span class="x">        echo 'Instance,Instance,Instance..........';</span>
<span class="x">    }</span>

<span class="x">    //用一个静态变量存储类的实例,只有第一次实例化的时候才赋值,以后都直接给出静态实例</span>
<span class="x">    public static function getInstance()</span>
<span class="x">    {</span>
<span class="x">        if(!isset(self::$_instance)){</span>
<span class="x">            self::$_instance = new static();</span>
<span class="x">        }</span>

<span class="x">        return self::$_instance;</span>
<span class="x">    }</span>
<span class="x">}</span>
</code>
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