1//傳統模式 --這段**能很好工作,但大量的重複**很煩人,不想為每個domainobject子類都建立這段相同**吧?2/*
34abstract class domainobject{}56
class user extends domainobject712
13public static function create()
141718}
19class document extends domainobject
2025
26public static function create()
273031}
32user::create();
33document::create();
34*/
3536
//能否這麼幹? 例項化最初呼叫者,誰呼叫例項化誰。但是這裡self是指向的抽象類domainobject
37//fatal error: cannot instantiate abstract class domainobject 無法例項化抽象方法
38/*
39abstract class domainobject
40 45}
4647
class user extends domainobject{}
48class document extends domainobject{}
49user::create();
50*/
5152
後 可以使用static關鍵字,延遲靜態繫結,通俗的就是,static 指向的是最初呼叫者
53abstract
class
domainobject
54 59}
60class user extends
domainobject
616667}
68class document extends
domainobject
6974
}75 user::create(); //
user::__construct
76 document::create(); //
document::__construct
/***********static 關鍵字不僅僅可以用於例項化,和self和parent一樣,static還可以作為靜態方法呼叫識別符號**************/
1abstract
class
domainobject29
10public
static
function
create()
1114
15static
function
getgroup()
1619}20
21class user extends
domainobject{}
22class document extends
domainobject
2328}29
class spreadsheet extends
document{}
3031
print_r(user::create()); //
[group:domainobject:private] => default
32print_r(document::create()); //
[group:domainobject:private] => document
33print_r(spreadsheet::create()); //
[group:domainobject:private] => document
php5 3新特性之延遲靜態繫結
基於php版本 5.3.5 php5.3 以後引入了延遲靜態繫結 static 關鍵字 類似於 self 關鍵字 但它指向的是被呼叫的類 document 而不是包含類 domainobject static 和 self 的區別 主要的作用就是,彌補了原先的不足,原先子類可以用parent找到父類...
php5 3後靜態繫結用法詳解
手冊原文 自 php 5.3.0 起,php 增加了乙個叫做後期靜態繫結的功能,用於在繼承範圍內引用靜態呼叫的類。準確說,後期靜態繫結工作原理是儲存了在上乙個 非 呼叫 non forwarding call 的類名。當進行靜態方法呼叫時,該類名即為明確指定的那個 通常在 運算子左側部分 當進行非靜...
PHP延遲靜態繫結
1 self用法 self是指向定義它的當前類的指標。當前類 current class class person 獲取年齡 public static function getage 輸出 self name i am person self age 18 2 static用法 static是指向...