__construct
構造還是 具有建構函式的類在每次建立新物件時先呼叫此方法,適合做一些初始化工作。
如果 php 5 在類中找不到 __construct()
函式並且也沒有從父類繼承乙個的話,它就會嘗試尋找舊式的建構函式,也就是和類同名的函式,也就是說會 __construct 比類同名的函式 優先順序高自 php5.3.3 起,在命名空間中,與類名同名的方法不再作為建構函式。這一改變不影響不在命名空間中的類。
當 __construct()
被與父類 __construct()
具有不同引數的方法覆蓋時,php 不會產生乙個e_strict
(編碼標準化警告) 錯誤資訊。
__destruct
析構函式 會在某個物件的所有引用都被刪除或者當物件顯示銷毀時執行。
和建構函式一樣,父類的析構函式不會被引擎暗中呼叫。要執行父類的析構函式,必須在子類的析構函式體中顯式呼叫parent::__destruct()。此外也和建構函式一樣,子類如果自己沒有定義析構函式則會繼承父類的。
析構函式即使在使用 exit()
終止指令碼執行時也會被呼叫。在析構函式中呼叫 exit()
將會中止其餘關閉操作的執行。
__call
在物件中呼叫乙個不可訪問方法時,__call()
會被呼叫。
__callstatic
用靜態方式中呼叫乙個不可訪問方法時,__callstatic()
會被呼叫。
__get()
,__set()
,__isset()
和 __unset()
進行屬性過載
在給不可訪問屬性賦值時,__set()
會被呼叫。
讀取不可訪問屬性的值時,__get()
會被呼叫。
當對不可訪問屬性呼叫 isset()
或 empty()
時,__isset()
會被呼叫。
當對不可訪問屬性呼叫 unset()
時,__unset()
會被呼叫
屬性過載只能在物件中進行。在靜態方法中,這些魔術方法將不會被呼叫。所以這些方法都不能被 宣告為 static
。從 php 5.3.0 起, 將這些魔術方法定義為 static
會產生乙個警告。
__sleep()
方法常用於提交未提交的資料,或類似的清理操作。同時,如果有一些很大的物件,但不需要全部儲存,這個功能就很好用。
與之相反, unserialize()
會檢查是否存在乙個 __wakeup()
方法。如果存在,則會先呼叫 __wakeup
方法,預先準備物件需要的資源。
__wakeup()
經常用在反序列化操作中,例如重新建立資料庫連線,或執行其它初始化操作。
note:法用於乙個類被當成字串時應怎樣回應。例如 echo $obj;__sleep()
不能返回父類的私有成員的名字。這樣做會產生乙個
e_notice
級別的錯誤。可以用serializable介面來替代。
應該顯示些什麼。此方法必須返回乙個字串,否則將發出一條e_recoverable_error
級別的致命錯誤。
當嘗試以呼叫函式的方式呼叫乙個物件時,__invoke()
方法會被自動呼叫。
note:static object__set_state( array本特性只在 php 5.3.0 及以上版本有效。
$properties
)
本方法的唯一引數是乙個陣列,其中包含按 array('property' => value, ...)
格式排列的類屬性。
呼叫 var_expotr() 匯出類時,此靜態方法會被呼叫
在轉儲物件以獲取應顯示的屬性時,var_dump()呼叫此方法。如果沒有在物件上定義方法,那麼將顯示所有公共、受保護和私有屬性。
php魔術常量,魔術方法
魔術常量 1。line 返回檔案中的當前行號。2。file 返回檔案的完整路徑和檔名。如果用在包含檔案中,則返回包含檔名。自php4.0.2 起,file 總是包含乙個絕對路徑,而在此之前的版本有時會包含乙個相對路徑。3。function 返回函式名稱 php4.3.0 新加 自php5 起本常量返...
invoke 魔術 PHP 魔術方法
php 魔術方法 構造方法 construct 析構方法 destruct get 與 set unset call 和 callstatic sleep 和 wakeup clone tostring invoke set state debuginfo construct 這個方法應該是最常用的...
php魔術方法
php5魔術方法 魔術函式 1。construct 建構函式 例項化物件時被呼叫,當 construct和以類名為函式名的建構函式同時存在時,construct將被呼叫,另乙個不被呼叫。2。destruct 析構函式 當刪除乙個物件或物件操作終止時被呼叫 程式結束後物件就摧毀 永遠都是最後執行的。3...