PHP面向?qū)ο笾笃陟o態(tài)綁定功能介紹
本文將對PHP后期靜態(tài)綁定功能進(jìn)行介紹,它主要用于解決在繼承范圍內(nèi)引用靜態(tài)調(diào)用的類。
首先來看下面這個(gè)例子:
class Person
{
public static function status()
{
self::getStatus();
}
protected static function getStatus()
{
echo "Person is alive";
}
}
class Deceased extends Person
{
protected static function getStatus()
{
echo "Person is deceased";
}
}
Deceased::status(); //Person is alive
很明顯,結(jié)果不是我們預(yù)期的,這是因?yàn)閟elf::取決于定義時(shí)所在的類,而不是運(yùn)行中的類。為了解決這個(gè)問題,你可能會(huì)在繼承類中重寫status()方法,更好的解決方案是PHP 5.3后添加了后期靜態(tài)綁定的功能。
class Person
{
public static function status()
{
static::getStatus();
}
protected static function getStatus()
{
echo "Person is alive";
}
}
class Deceased extends Person
{
protected static function getStatus()
{
echo "Person is deceased";
}
}
Deceased::status(); //Person is deceased
可見,static::不在指向當(dāng)前所在的類,實(shí)際上,它是在運(yùn)行中計(jì)算的,強(qiáng)制獲取最終類的所有屬性。
因此,建議,以后不要再使用self::,使用static::
相關(guān)文章
yii2.0框架數(shù)據(jù)庫操作簡單示例【添加,修改,刪除,查詢,打印等】
這篇文章主要介紹了yii2.0框架數(shù)據(jù)庫操作,結(jié)合簡單實(shí)例形式分析了yii2.0框架數(shù)據(jù)庫添加,修改,刪除,查詢,打印等相關(guān)操作技巧,需要的朋友可以參考下2020-04-04PHP getallheaders無法獲取自定義頭(headers)的問題
這篇文章主要介紹了PHP getallheaders無法獲取自定義頭(headers)的問題的相關(guān)資料,需要的朋友可以參考下2016-03-03PHP實(shí)現(xiàn)原生態(tài)圖片上傳封裝類方法
這篇文章主要介紹了PHP實(shí)現(xiàn)原生態(tài)圖片上傳封裝類方法,這里整理了詳細(xì)的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-11-11ThinkPHP5.0框架結(jié)合Swoole開發(fā)實(shí)現(xiàn)WebSocket在線聊天案例詳解
這篇文章主要介紹了ThinkPHP5.0框架結(jié)合Swoole開發(fā)實(shí)現(xiàn)WebSocket在線聊天,結(jié)合完整案例形式詳細(xì)分析了thinkPHP5擴(kuò)展Swoole實(shí)現(xiàn)WebSocket在線聊天相關(guān)步驟、操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-04-04