abstrak: 后期靜態(tài)綁定。用于在繼承范圍內(nèi)引用靜態(tài)調(diào)用的類。該功能從語言內(nèi)部角度考慮被命名為”后期靜態(tài)綁定“。”后期綁定“的意思是說,static::不再被解析為定義當(dāng)前方法所在的類,而是在實際運行時計算的。也可以稱之為”靜態(tài)綁定“,因為它可以用于(但不限于)靜態(tài)方法的調(diào)用。<?phpclass Father{
后期靜態(tài)綁定。用于在繼承范圍內(nèi)引用靜態(tài)調(diào)用的類。該功能從語言內(nèi)部角度考慮被命名為”后期靜態(tài)綁定“?!焙笃诮壎ā暗囊馑际钦f,static::不再被解析為定義當(dāng)前方法所在的類,而是在實際運行時計算的。也可以稱之為”靜態(tài)綁定“,因為它可以用于(但不限于)靜態(tài)方法的調(diào)用。
<?php
class Father{
public static $money = 50000;
//靜態(tài)方法
public static function getClass()
{
//返回當(dāng)前的類名
return __CLASS__;
}
//靜態(tài)方法: 訪問當(dāng)前類中的其它靜態(tài)成員
public static function getMoney()
{
// return self::getClass().'=>'.self::$money;
//后期靜態(tài)綁定,使用static,在靜態(tài)繼承的上下文中,動態(tài)的與調(diào)用類綁定(動態(tài)設(shè)置靜態(tài)成員的調(diào)用者(主體))
return static::getClass().'=>'.static::$money;
}
}
class Son extends Father {
//覆寫父類靜態(tài)屬性
public static $money = 30000;
//覆寫父類中的靜態(tài)方法
public static function getClass()
{
return __CLASS__;
}
}
echo Father::$money.'<br>';
//調(diào)用父類的靜態(tài)方法,獲取父類類名
echo Father::getClass().'<br>';
//獲取父類中其它靜態(tài)成員的相關(guān)信息
echo Father::getMoney().'<hr>';
echo Son::$money.'<br>';
//子類調(diào)用父類的靜態(tài)方法
//Son類覆寫了Father類的getClass(),調(diào)用子類已重寫的方法,返回子類名稱
echo Son::getClass().'<br>';
//因為Son類繼承了Father類,所以也可以直接訪問父類中的getMoney()方法
//因為沒有子類Son中對getMoney()進(jìn)行覆寫,所以訪問的還是Father類中的數(shù)據(jù)
echo Son::getMoney().'<hr>';
//此時我再用父類調(diào)用getMoney(),static 也會自動與 Father類綁定
echo Father::getMoney();
Guru membetulkan:天蓬老師Masa pembetulan:2019-04-11 09:06:01
Rumusan guru:關(guān)于靜態(tài)綁定有點難理解, 其實也不難, 只要記得他用在靜態(tài)繼承的上下文中就可以