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

PHP延遲靜態綁定static詳解

小云云
小云云原創
2018-03-26 11:16:171297瀏覽

在舊版PHP中傳回本類別的一個實例所使用的return new self(); 但是這個方法有很大的弊端,就是self指的是解析上下文而不是呼叫的上下文。 本文主要和大家分享PHP延遲靜態綁定static詳解,希望能幫助大家。

abstract class father { 

    public static function create() { 

        return new self(); 

    } 
} 
class son1 extends father { 
} 
son1::create();

也就是說上述程式碼中子類別呼叫create()方法其實是傳回一個父類別的實例,因為self指向它定義的地方而不是呼叫的地方,而father類別是抽象類別,則這段程式碼會報一個致命錯誤。 <br>

在PHP5.3以後引入了延遲靜態綁定,使用static關鍵字。 <br>

abstract class father { 

    public static function create() { 

        return new static(); 

    } 
} 
class son1 extends father { 
} 
son1::create();

將self改為static就能正常執行,因為static指向被呼叫的類別而不是定義的類別。 <br>

我們也可以使用static作為靜態方法的標識符,甚至是從非靜態上下文中呼叫。這個以後再寫吧。

相關推薦:

php實作後期靜態綁定

#php後期靜態綁定實例詳解

php延遲靜態綁定是什麼?延遲靜態綁定實例程式碼詳解

#

以上是PHP延遲靜態綁定static詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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