訪問控制
public 可在外部調(diào)用
protected 只能在類的內(nèi)部 或者子類中調(diào)用
prrivate 只能在自身內(nèi)調(diào)用
子類繼續(xù)父類中的方法,public 和protected方法。如果子類要重寫父類中的方法,則需保持父類訪問控制權(quán)限,或者更加開放。
父類為public 則子類只能為public
父類為protected 則子類可以為protected public
父類為private 則子類可為 private protected public
如果有魔術(shù)方法不想被觸發(fā),可以使用protect 或者是private 可以實(shí)現(xiàn)魔術(shù)方法的觸發(fā)。
如 禁止一個(gè)類被實(shí)例化
class A{
protected function __construct()
{
}
}
//此時(shí),則會報(bào)錯(cuò)。
$a = new A;
魔術(shù)方法
構(gòu)造函數(shù)和析構(gòu)函數(shù)
__construct 在實(shí)例化一個(gè)類時(shí)觸發(fā)
__destruct 在對象被銷毀時(shí)觸發(fā)
重載
當(dāng)調(diào)用當(dāng)前環(huán)境下未定義或不可見的類屬性或方法,會調(diào)用的魔術(shù)方法
屬性重載
在給不可訪問屬性賦值時(shí) __set
讀取不可訪問屬性的值時(shí) __get
當(dāng)對不可訪問屬性調(diào)用isset() 或者empty() __isset
當(dāng)對不可訪問屬性調(diào)用unset() __unset
方法重載
在對象中調(diào)用一個(gè)不可訪問方法時(shí) __call
在靜態(tài)上下文中調(diào)用一個(gè)不可訪問方法時(shí) __callStatic
其他
在類被序列化時(shí) __sleep
在類被反序列化 __wakeup
一個(gè)類被當(dāng)成字符串 __toString
當(dāng)嘗試以調(diào)用函數(shù)的方式調(diào)用一個(gè)對象時(shí) __invoke
調(diào)用var_export()導(dǎo)出類時(shí),__set_state