首頁  >  文章  >  後端開發  >  PHP延遲靜態綁定

PHP延遲靜態綁定

巴扎黑
巴扎黑原創
2016-11-11 17:29:421241瀏覽

最近專案中遇到這樣一個case,感覺所有的Model類別都須是單例效能更高.因為所有的model皆繼承統一父類別BaseModel,所以在BaseModel中加入控制單例的程式碼,簡單示範如下:

Java代碼  

/*基類*/  

class BaseModel  

{  

 

  

    public static function instance()  

    {  empty(self::$instance)) {  

  

            self:: 

  

        return self::$instance;  

    }  

}  各個邏輯子類別Model 

Java代碼  

/*商品類別*/  

class GoodModel extends    

  

        return array(  


         

         >$goodId,  

            'name'=>'小蘋果',  

       d5864/180'  

        );  

    }  

}

  

########################################################################################################## ##################  

$good = GoodModel::instance();  

  

var_dump($good); 

Java程式碼  

object(BaseModel)#1 (0) {  

}  

非需要的GoodModel 

selfs

繼承變數被重寫呼叫父類別裡的函數self::呼叫的變數還是輸出父類別的變數值而不會輸出被重寫的值 

所以需要採用static關鍵字延遲靜態綁定,static代表了子類 

程式碼如下 

Java代碼  

/*基類*/  

class BaseModel  

= null;  

  

    public static function instance()  


    
  

        if (empty(self::$instance)) {  

  


        }  

  

        return self

這時的$good 即為 

Java碼  

object(GoodModel)#1 (0) {  

Java代碼  

class BaseModel  

{  

  

    private static ic function instance()  

    {  

  

        

  

            $className = get_called_class();  

  

        }  

  

        return self::$instance;

    }  

}


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:PHP 重載下一篇:PHP 重載