php5.3新特性之延遲靜態繫結
阿新 • • 發佈:2019-02-05
基於PHP版本: 5.3.5
PHP5.3 以後引入了延遲靜態繫結:
static(關鍵字) 類似於 self(關鍵字) , 但它指向的是被呼叫的類(Document) 而不是包含類(DomainObject) , static 和 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__;
}
}