php5 3 延遲靜態繫結 static關鍵字

2021-09-08 04:08:22 字數 1902 閱讀 1908

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還可以作為靜態方法呼叫識別符號**************/

1

abstract

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是指向...