php5中this,self,parent的意義

2021-08-22 18:21:59 字數 2127 閱讀 5996

php5是一具備了大部分物件導向語言的特性的語言,比php4有了很多的物件導向的特性,但是有部分概念也比較繞人,所以今天拿出來說說,說的不好,請高手見諒. (閱讀本文,需要了解php5的物件導向的知識)

首 先我們來理解三個關鍵字: this,self,parent,從字面上比較好理解,是指這,自己,父親,呵呵,比較好玩了,我們先建立幾個概念,這三個關鍵字分別是用在什麼地方 呢?我們初步解釋一下,this是指向當前物件的指標(我們姑且用c裡面的指標來看吧),self是指向當前類的指標,parent是指向父類的指標。

這麼說還不能很了解,那我們就根據實際的例子結合來講講。

(1) this

<?php

class username

//析構函式

function __destruct(){}

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

function printname()

}//例項化物件

$nameobject = new username( "heiyeluren" );

//執行列印

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

//第二次例項化物件

$nameobject2 = new username( "php5" );

//執行列印

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

?>

我 們看,上面的類分別在11行和20行使用了this指標,那麼當時this是指向誰呢?其實this是在例項化的時候來確定指向誰,比如第一次例項化物件 的時候(25行),那麼當時this就是指向$nameobject物件,那麼執行18行的列印的時候就把print( $this->name ),那麼當然就輸出了"heiyeluren"。第二個例項的時候,print( $this->name )變成了print( $nameobject2->name ),於是就輸出了"php5"。所以說,this就是指向當前物件例項的指標,不指向任何其他物件或類。

(2)self

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

<?php

class counter

//列印最次數值

function printlastcount() }

//例項化物件

$countobject = new counter();

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

?>

我 們這裡只要注意兩個地方,第6行和第12行。我們在第二行定義了乙個靜態變數$firstcount,並且初始值為0,那麼在12行的時候呼叫了這個值 得,使用的是self來呼叫,並且中間使用"::"來連線,就是我們所謂的域運算子,那麼這時候我們呼叫的就是類自己定義的靜態變數$ frestcount,我們的靜態變數與下面物件的例項無關,它只是跟類有關,那麼我呼叫類本身的的,那麼我們就無法使用this來引用,可以使用 self來引用,因為self是指向類本身,與任何物件例項無關。換句話說,假如我們的類裡面靜態的成員,我們也必須使用self來呼叫。

(3)parent

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

<?php

//基類

class animal

}//派生類

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

function printperson()

}//例項化person物件

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

//執行列印

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

?>

我 們注意這麼幾個細節:成員屬性都是public的,特別是父類的,是為了供繼承類通過this來訪問。我們注意關鍵的地方,第25行:parent:: __construct( "heiyeluren" ),這時候我們就使用parent來呼叫父類的建構函式進行對父類的初始化,因為父類的成員都是public的,於是我們就能夠在繼承類中直接使用 this來呼叫。

php5中this,self,parent的意義

php5是一具備了大部分物件導向語言的特性的語言,比php4有了很多的物件導向的特性,但是有部分概念也比較繞人,所以今天拿出來說說,說的不好,請高手見諒.閱讀本文,需要了解php5的物件導向的知識 首 先我們來理解三個關鍵字 this,self,parent,從字面上比較好理解,是指這,自己,父親,...

php5 mysql Mysql在php5中的應用

1.php與mysql建立連線 php.ini載入mysql元件 extension php mysql.dll 前的 去掉 extension dir 路徑是否正確 php連線mysql函式 mysql connect 開啟mysql連線 mysql select db 開啟乙個資料庫 和or d...

php5中的異常小結

php5中有了異常了,比以前有大的改進,下面筆記之.1 首先是try,catch path d in.txt try 檢測異常 catch exception e 捕獲異常 function file open path if fopen path,r 如果檔案無法開啟,丟擲異常物件 注意用 e g...