php單例模式的兩種方法和檢測方法

怎麼算是個單例模式,怎麼確認是單例模式?參考以下代碼


<?php
error_reporting(0);
class Authorization{

    protected static $authorization = NULL;
    protected static $num=0;

    public static function &instance() {
         if (self::$authorization == NULL){
            self::$authorization = new Authorization();
            self::$num++;
         }
         
        
        // 
        // 如果把上門註釋掉,打開下面兩行就不是單例模式,就會被多new好多次
        //  self::$num++;
        // return new Authorization;
    }

    public function  say(){
    		echo 'say--'.self::$num;

    }



}

    $p1=Authorization::instance();
    $p2=Authorization::instance();
    $p3=Authorization::instance();


    echo $p1->say();
    echo $p2->say();
  


另外一種方法 :

if(self::$authorization instanceof self){
        	
        	return self::$authorization;
        	   
        }else{
        	self::$num++;
            self::$authorization=new self();
            return  self::$authorization;
                
          }
輸出打印下就明白了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章