一些類和對(duì)象的系統(tǒng)函數(shù)
- class_exists():判斷某個(gè)類是否存在
- interface_exists():判斷接口是否存在
- get_class():獲取某個(gè)對(duì)象的"所屬類名"
- get_parent_class():獲取某個(gè)對(duì)象的"所屬父類類名"
- get_class_methods():獲取一個(gè)類的所有方法姑宽,返回一個(gè)索引數(shù)組, 數(shù)組里是所有的方法
- get_class_vars():獲取一個(gè)類的所有方法,返回一個(gè)鍵值對(duì)數(shù)組
- get_declared_classes():獲得所有聲明過得類(包含系統(tǒng)中的類)
對(duì)象有關(guān):
- is_object():判斷是否為對(duì)象
- get_object_vars():獲得對(duì)象的所有屬性蜡镶,返回一個(gè)數(shù)組蜜宪,下標(biāo)為屬性名锭硼,值為屬性名
- 對(duì)象名 instanceOf '類名':判斷對(duì)象是否為某個(gè)類的對(duì)象
注意:如果有繼承關(guān)系预柒,它也一定為該上級(jí)類的對(duì)象。
兩個(gè)特定語(yǔ)法場(chǎng)景辨析
對(duì)象向下傳遞:
當(dāng)一個(gè)對(duì)象調(diào)用一個(gè)實(shí)例方法喳资,然后在該實(shí)例方法(f1)中又去"靜態(tài)"調(diào)用另
一個(gè)類的方法(f2)觉吭,則在方法f2中,會(huì)自動(dòng)獲得在方法f1中的$this對(duì)象仆邓。
對(duì)象向下傳遞
static 后期靜態(tài)綁定特性:
在方法中使用self代表代碼所在的那個(gè)類鲜滩,而static代表調(diào)用方法所在的那個(gè)類,一般需求較常用static节值,比較靈活
案例分析
static3個(gè)不同的用武之地:
- 函數(shù)中的靜態(tài)變量
- 類中的靜態(tài)成員
- 方法中的動(dòng)態(tài)指代"指代"當(dāng)前類
面向?qū)ο笕笏枷胩卣鹘榻B
- 封裝
把數(shù)據(jù)封閉起來(lái)徙硅,盡量不讓別人看到,類的定義其實(shí)可以認(rèn)為最基本的封裝搞疗,通常理解的封裝是盡量將屬性作為私有嗓蘑,并通過公共方法來(lái)向外提供對(duì)該屬性的操作。 - 繼承
很容易理解贴汪,不在多說 - 多態(tài)
大致行為:看起來(lái)使用的是相同的方法,卻得到不同的結(jié)果休吠。一個(gè)對(duì)象使用相同的方法扳埂,但能得到不同的結(jié)果,直觀的例子瘤礁,相同方法名阳懂,可以有不同的參數(shù)數(shù)量和類型,PHP中不能直接使用多態(tài)柜思,但能變相達(dá)到相同的效果岩调。