php的繼承模型中有一個存在已久的問題,那就是在父類中引用擴展類的最終狀態比較困難
如下例
class A
{
public static function echoClass()
{
echo __CLASS__;
}
public static function test()
{
self::echoClass();
}
}
class B extends A
{
public static function echoClass()
{
echo __CLASS__;
}
}
B::test(); //輸出A
在PHP5.3中加入了一個新特性 延遲靜態綁定,就是把本來在定義階段固定下來的表達式
或變量,改在執行階段才決定,比如當一個子類繼承了父類的靜態表達式的時候,它的值並不能被改變,有
時不希望看到這種情況
下面的例子說明了延遲靜態綁定的作用
class A
{
public static function echoClass()
{
echo __CLASS__;
}
public static function test()
{
static::echoClass();
}
}
class B extends A
{
public static function echoClass()
{
echo __CLASS__;
}
}
B::test(); //輸出B
具體的應用場景 後期完善