php中this,self,parent三個關鍵字

2021-08-15 12:34:59 字數 2411 閱讀 5806

this是指向物件例項的乙個指標

self是對類本身的乙個引用

parent是對父類的引用

(1) this

this就是指向當前物件例項的指標,不指向任何其他物件或類。

1 <?php

23 class username

4 13

14 //析構函式

15 function __destruct(){}

1617 //列印使用者名稱成員函式

18 function printname()

19

22 }

2324 //例項化物件

25 $nameobject = new username( "heiyeluren" );

2627 //執行列印

28 $nameobject->printname(); //輸出: heiyeluren

2930 //第二次例項化物件

31 $nameobject2 = new username( "php5" );

3233 //執行列印

34 $nameobject2->printname(); //輸出:php5

35 ?>

我 們看,上面的類分別在11行和20行使用了this指標,那麼當時this是指向誰呢?

其實this是在例項化的時候來確定指向誰,比如第一次例項化物件 的時候(25行),

那麼當時this就是指向$nameobject物件,那麼執行18行的列印的時候就把print( $this->name )變成了print( $nameobject->name ),那麼當然就輸出了"heiyeluren"。

第二個例項的時候,print( $this- >name )變成了print( $nameobject2->name ),於是就輸出了"php5"。

所以說,this就是指向當前物件例項的指標,不指向任何其他物件或類。

(2)self

首先我們要明確一點,self是指向類本身,也就是self是不指向任何已經例項化的物件,一般self使用來指向類中的靜態變數。

1 <?php

23 class counter

4

1415 //列印最次數值

16 function printlastcount()

17

20 }

2122 //例項化物件

23 $countobject = new counter();

2425 $countobject->printlastcount(); //輸出 1

2627 ?>

我 們這裡只要注意兩個地方,第6行和第12行。

我們在第二行定義了乙個靜態變數$firstcount,並且初始值為0,那麼在12行的時候呼叫了這個值, 使用的是self來呼叫,並且中間使用"::"來連線,

就是我們所謂的域運算子,那麼這時候我們呼叫的就是類自己定義的靜態變數$frestcount, 我們的靜態變數與下面物件的例項無關,它只是跟類有關,

那麼我呼叫類本身的的,那麼我們就無法使用this來引用,可以使用 self來引用,

因為self是指向類本身,與任何物件例項無關。換句話說,假如我們的類裡面靜態的成員,我們也必須使用self來呼叫。

(3)parent

我們知道parent是指向父類的指標,一般我們使用parent來呼叫父類的建構函式。

1 <?php

23 //基類

4 class animal

5 14 }

1516 //派生類

17 class person extends animal //person類繼承了animal類

18 29

30 function printperson()

31

34 }

3536 //例項化person物件

37 $personobject = new person( "male", "21");

3839 //執行列印

40 $personobject->printperson(); //輸出:heiyeluren is male,this year 21

4142 ?>

我 們注意這麼幾個細節:成員屬性都是public的,特別是父類的,是為了供繼承類通過this來訪問。

我們注意關鍵的地方,第25行: parent::__construct( "heiyeluren" ),這時候我們就使用parent來呼叫父類的建構函式進行對父類的初始化,

因為父類的成員都是public的,於是我們就能夠在繼承類中直接使用 this來呼叫。

總結:this是指向物件例項的乙個指標,self是對類本身的乙個引用,parent是對父類的引用。

php中mysql函式 php中mysql有關函式

1.mysql query 一般是用來查詢資料裡面的資料。如 username post name sql select from members where login name username result mysql query sql 以上程式是檢測資料庫中是否存在表單傳送過來的使用者名稱...

php 中set是什麼 PHP中

php中把以兩個下劃線 開頭的方法稱為魔術方法 magic methods 這些方法在php中充當了舉足輕重的作用。其中 set 設定乙個類的成員變數時呼叫 set 的作用 set property,value 方法用來設定私有屬性,給乙個未定義的屬性賦值時,此方法會被觸發,傳遞的引數是被設定的屬性...

php 中set是什麼 PHP中

php中把以兩個下劃線 開頭的方法稱為魔術方法 magic methods 這些方法在php中充當了舉足輕重的作用。其中 set 設定乙個類的成員變數時呼叫 set 的作用 set property,value 方法用來設定私有屬性,給乙個未定義的屬性賦值時,此方法會被觸發,傳遞的引數是被設定的屬性...