PHP延遲靜態綁定static詳解

小云云
發布: 2023-03-22 10:02:01
原創
1313 人瀏覽過

在舊版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指向被呼叫的類別而不是定義的類別。

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

相關推薦:

php實作後期靜態綁定

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

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

#

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板