本文主題是后期靜態(tài)綁定泛源,探討在繼承范圍內篙挽,通過self和static調用靜態(tài)方法時冲秽,實際指向的類是父類還是子類舍咖。
使用魔術變量Class, 輸出實際指向的類名锉桑。實例化Son
類后排霉,在使用selfGet
時調用的是父類的hello
方法, 在使用staticGet
調用的是子類的hello
方法民轴。
class Father{
public static function hello()
{
echo __Class__;
}
public static function selfGet()
{
echo self::hello();
}
public static function staticGet()
{
echo static::hello();
}
}
class Son extends Father{
public static function hello()
{
echo __Class__;
}
}
(new Son)::selfGet();//輸出結果father
echo "<br>";
(new Son)::staticGet();//輸出結果son
這是因為使用self
調用靜態(tài)方法時攻柠,是在子類未實例化調用之前就已經綁定完畢,所以他原先在父類中指向的就是父類中的方法后裸。而static
是在實例化的時候才進行綁定指向的是此時實例化的類瑰钮,也就是子類。