>  기사  >  백엔드 개발  >  php 싱글턴 패턴이란?

php 싱글턴 패턴이란?

WBOY
WBOY원래의
2016-12-01 00:01:161094검색

답글 내용:

실제로 싱글톤 모델은 직설적으로 말하면 클래스가 한 번만 인스턴스화될 수 있음을 의미합니다. 하지만 이 인스턴스화에 대해 어떻게 소란을 피울 수 있을까요? 실제로 획기적인 방법은 __construct()라는 마법 메서드입니다. 이 메서드는 클래스가 인스턴스화되면 이 메서드가 자동으로 실행된다는 의미입니다. 그렇다면 이 메소드를 protected 또는 private로 설정하면 어떤 영향이 있을까요?
<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>
대단해요 호스트는 무적이에요 Talk는 저렴합니다. 내 코드를 보여주세요.

가장 간단한 PHP 싱글톤 모드 클래스:
<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>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.