php類中成員


類中成員

一個類的內部可以有3種代碼:

屬性

方法

類常量

它們統稱為“類中成員”。

 

一般屬性

屬性就是放在一個類中的變量。

定義形式:

形式1 var  $v1 ; //定義不賦值

形式2:    var  $v2 = 2; //定義的同時可以賦值,該值只能是“直接值”,常量(值)

//不能是變量值,也不能是“計算表達式”

形式3:     public  $v1;

形式4:     public   $2 = 2; //其實var是“public”一個別名,正式用public更好。

錯誤形式:

$v1 = 1;

var  $v2 = 1+3; //右邊不能是計算表達式

public   $v3 = $v2; //右邊不能是變量

 

使用形式:

$對象->屬性名; //注意:屬性名前面沒有$符號。

說明:

通常,可以出現變量(數據)的位置,就可以出現對象的屬性。

 

課堂課間練習:

寫一個人類對象,具有3個屬性,並能夠完成求直角三角形的斜邊的工作。

 

一般方法

 

方法定義跟原來函數定義幾乎一樣。

 

使用是通過類或類的對象來進行的。

 

方法前可以加修飾詞:public, protected,private,省略就算public

 

方法中$this關鍵字

 

$this是一個“偽對象”,代表當前所屬類的當前對象。

 

一些簡單說法:

 

類是定義好的某些對象的“模板/模型”

 

對象是根據該模板/模型所“創建”出來的具體物體

 

一個對象可以有哪些屬性(數據),是由該類來決定的。

 

一個對象可以做那些事情(方法),也是由該類來決定。

 

通常認為,一個類(對象),就是擁有一些數據,並通過它自己的方法可以去處理這些數據的“獨立體”

 

 

 

一個系統函數:get_class(對象) 

 

作用:獲得某個對象的“所屬類名”——結果只是一個類名字符串。

 

$class_name = get_class($p1); //結果可能是:”Person” 

靜態屬性

在定義屬性的時候,前面加上關鍵字:static,此時就是靜態屬性。

 

靜態屬性有什么用?

對比來說:一般屬性,他的值是隸屬於該類的具體某個對象(雖然定義在類中),或者說,每個對象的同樣的屬性的值,有可能不一樣。

靜態屬性就是:只隸屬於類本身——也可以看做是所有對象的“共有數據”。

靜態屬性的使用:

通過特殊的語法:::(雙冒號語法,也叫范圍解釋符)

::$靜態屬性名

對比普通屬性的使用:

對象->普通屬性名; //普通屬性也可以叫做“實例屬性”,相應的,對象也叫“實例”

 

靜態方法

 

如果在一個方法的前面加上static關鍵字修飾,則就變成了靜態方法。

 

靜態方法同樣隸屬於類,而不是隸屬於具體對象。使用方法跟靜態屬性類似:

 

類名::靜態方法名();

 

從理念上,可以認為,靜態方法是只隸屬於類,而為所有對象所“共有”。

如果通過類名來調用靜態方法,則該方法中不可以出現$this關鍵字。

 

self:

 

含義:代表當前類

 

使用:通常只能在某個類的某個方法內部代表該類的名稱。

 

構造方法

 

構造方式是類中的一個“特殊”方法,其作用是在實例化一個對象的同時,給該對象的屬性賦值,使之一創建完成,就具有了其本身的特有數據(屬性值)。

 

1,該方法名字是固定的,為:__construct();

 

2,該方法必須是普通方法(不能是靜態方法)

 

3,通常該方法應該是public

 

4,通常該方法中使用$this這個關鍵字來對屬性進行賦值

 

5,當new 類名()的時候,其實是在調用該構造方法

 

6,如果一個類中定義了構造方法,則實例化該類時就會調用該方法,且實例化時的參數需要跟構造方法的參數匹配

 

析構方法

 

構造方法是“創建”對象的時候會自動調用。

 

析構方法是“銷毀”對象的時候會自動調用。

 

 

 

系統方法通常用於在銷毀對象的時候來“清理數據”(打掃戰場)——如果需要,就可以利用這個機會去處理。

 

 

 

通常,php程序結束后,所有對象都會自動銷毀(其實屬於php內部的垃圾回收機制)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM