php的延遲靜態綁定

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


具體的應用場景 後期完善

發佈了54 篇原創文章 · 獲贊 10 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章