1. 程式人生 > >php5.3新特性之延遲靜態繫結

php5.3新特性之延遲靜態繫結

基於PHP版本: 5.3.5

PHP5.3 以後引入了延遲靜態繫結:

static(關鍵字) 類似於 self(關鍵字) , 但它指向的是被呼叫的類(Document而不是包含類(DomainObjectstatic 和 self 的區別:

主要的作用就是,彌補了原先的不足,原先子類可以用parent找到父類物件的,現在可以在父類用static找到當前繼承它的這個子類物件,從而呼叫子類自己的靜態方法,$this可以呼叫子類自己的方法。

class A  
{  
    public static function echoClass()  
    {  
        echo __CLASS__;  
    }  

public function what(){ echo __CLASS__;}

public static function test()  
    {  
        $this->what(); //輸出B 
        static::echoClass(); //輸出B 
        self::echoClass(); //輸出A 
    } 
}
 class B extends A { 
public static function echoClass()
 { 
        echo __CLASS__; 
} 
}
 B::test();

self是指當前類的物件,static是指呼叫的類的物件,$this也是指當前呼叫的類的物件,只是$this不能呼叫靜態屬性,self可以,而__CLASS__是用於指定類的名稱,一般用於註冊類的方法使使用。

class B extends A  
{        
    public static function echoClass($name=1)  
    {  
    	spl_autoload_register(array(__CLASS__,"echoClass"));
         echo __CLASS__;  
    }  
}