PHP高階特性 後期靜態繫結

2021-09-19 08:15:20 字數 728 閱讀 4249

"後期繫結"的意思是說,static::不再被解析為定義當前方法所在的類,而是由最終運算時動態決定。也可以稱之為"靜態繫結",因為它可以用於(但不限於)靜態方法的呼叫。

<?php

class a

publicstaticfunction test()

}class b extends a

}b::test();

輸出:

class a

class b

<?php

class a

publicfunction test()

}class b extends a

}$b =new b();

$b->test()

輸出:

class a

class b

後期靜態繫結還可以用於物件的例項化中,同上述內容一樣,在例項化物件時,static會根據執行時呼叫的類來決定例項化物件,而self是根據所在位置的類來決定例項化物件。

<?php

class a

}class b extends a

$arr = b::create();

foreach($arr as $value)

輸出:

object(a)[1]

object(b)[2]

php後期靜態繫結

後期靜態繫結 static 不再被解析為定義當前方法或屬性所在的類,而是在實際執行時計算的 可用 get called class 函式來得到被呼叫的方法所在的類名 this是指向當前物件 self 指向當前的類 self就是寫在哪個類裡面,實際呼叫的就是這個類 parent 指向父類 static...

php中後期靜態繫結(延遲靜態繫結)技術

定義乙個父類 這就要用到後期靜態繫結的技術,所謂後期,是指靜態方法的呼叫者,只有在執行狀態下才進行動態繫結,使用關鍵字 static 來實現,此時,static 就像乙個變數,始終與當前的呼叫類是繫結的class father 靜態方法 訪問當前類中的其它靜態成員 public static fun...

PHP後期靜態繫結理解

最近遇到乙個php手冊上的例子,自己掃了一眼,做錯了,mark一下 class a public static function who class b extends a public static function who class c extends b c test 對 呼叫和非 呼叫不理...