php面對物件之延遲靜態繫結:static關鍵字
阿新 • • 發佈:2019-01-30
先看一段程式碼:
abstract class domainObject{
static $name = 'domain';
public static function create(){
return self::$name;
}
}
class document extends domainObject{
static $name = 'document';
}
var_dump(document::create());
執行結果:string ‘domain’ (length=6)
self被解析為定義create()的domainObject,而不是解析為呼叫self的document類;
通過引入延遲靜態繫結概念,將上述程式碼中父類的self:: 替換為static::,
abstract class domainObject{
static $name = 'domain';
public static function create(){
return static::$name;
}
}
class document extends domainObject{
static $name = 'document';
}
var_dump(document::create());
執行結果即為:string ‘document’ (length=8)
延遲靜態繫結可使php在子類中查詢所有的屬性、值