init,__construct區別以及PHP魔術方法大彙總
init()是框架設定為初始化函式,當然框架內部還是用的___construct()內建函式;如果你是框架開發者,你當然也可以把初始化函式寫成__init(),begin(),start()等
PS:php內部的幾個魔術方法
PHP把所有以__(兩個下劃線)開頭的類方法當成魔術方法
1)__construct()
這樣的方法是建構函式,適合在使用物件前做一些初始化工作(注意:在5.3.3之後的版本與類名相同的方法不在是作為建構函式),注意在子類需要使用父類建構函式需要顯示呼叫parent::__construct()
2)__destruct()
與建構函式對應的是這個函式,這個是解構函式,物件的所有引用都被刪除或者當前物件被顯示銷燬才執行
如果需要呼叫父類解構函式也需要顯式呼叫parent::__destruct()。注意這個解構函式即使呼叫exit()函式也會執行
3)__call()
如果呼叫了當前環境下未定義(包含沒有許可權訪問的)和不可見屬性或者方法,這個方法會呼叫本類__call,如果沒有的話就會呼叫父類的__call方法
4)__callStatic()
5.3.0新增方法,主要用於靜態方法中,同樣的,這個方法必須使用public修飾
5)__get()
讀取未定義變數會呼叫該方法
6)__set()
5.1.0之後增加,未定義變數賦值會呼叫該方法
7)__isset()
當對未定義變數呼叫isset()或者empty()時呼叫該方法
8)__unset()
對未定義變數呼叫unset(),該魔術方法才會生效
9)__sleep()
serialize() 檢查類中是否有魔術名稱__sleep 的函式。如果這樣,該函式將在任何序列化之前執行。它可以清除物件並應該返回一個包含有該物件中應被序列化的所有變數名的陣列。使用__sleep 的目的是關閉物件可能具有的任何資料庫連線,提交等待中的資料或進行類似的清除任務。此外,如果有非常大的物件而並不需要完全儲存下來時此函式也很有用。
10)__wakeup()
unserialize() 檢查具有魔術名稱 __wakeup 的函式的存在。如果存在,此函式可以重建物件可能具有的任何資源。使用 __wakeup 的目的是重建在序列化中可能丟失的任何資料庫連線以及處理其它重新初始化的任務。
11)__toString()
__toString方法在將一個物件轉化成字串時自動呼叫
在PHP 5.2.0之前,__toString方法只有結合使用echo() 或 print()時 才能生效。PHP 5.2.0之後,則可以在任何字串環境生效(例如通過printf(),使用%s修飾符),但
不能用於非字串環境(如使用%d修飾符)。從PHP 5.2.0,如果將一個未定義__toString方法的物件 轉換為字串,會報出一個E_RECOVERABLE_ERROR錯誤
12)__invoke()
當嘗試以呼叫函式的方式呼叫一個物件時,__invoke() 方法會被自動呼叫,注意只能在5.3.0以後才能使用
13)__set_state()
當呼叫 var_export()時,這個靜態 方法會被呼叫(自PHP 5.1.0起有效)。
14)__clone()
當複製完成時, 如果定義了__clone()方法, 則新建立的物件(複製生成的物件)中的__clone()方法會被呼叫, 可用於修改屬性的值(如果有必要的話)。因為php物件賦值使用的引用傳遞,新物件會更改原物件的屬性和方法
相關文章
- PHP中什麼是魔術常量?有哪些魔術常量?(總結)PHP
- PHP 魔術方法PHP
- PHP魔術方法PHP
- php 魔術方法 __callPHP
- PHP魔術方法和魔術常量介紹及使用PHP
- PHP 魔術常量簡要PHP
- 快速查詢對方IP技術總彙(轉)
- PHP中的魔術方法和魔術常量簡介和使用PHP
- 區塊鏈名詞術語彙總區塊鏈
- __new()__ 與 __init()__的區別
- 區塊鏈以及區塊鏈技術總結區塊鏈
- c# ref out 區別 比較 彙總C#
- 《區塊鏈常用術語解釋》彙總區塊鏈
- js中==和===的區別以及總結JS
- PHP 物件導向 (六)魔術方法PHP物件
- php中的魔術常量__FILE__PHP
- PHP 資源彙總PHP
- 50-cloud-init.yaml 和80-cloud-init.yaml區別CloudYAML
- __new__和__init__的區別
- PHP之十六個魔術方法詳解PHP
- PHP 中 16 個魔術方法詳解PHP
- php 物件導向中的魔術方法PHP物件
- php基礎知識(五)魔術方法PHP
- PHP字串函式彙總PHP字串函式
- PHP 常用函式彙總PHP函式
- python any,call,init,下劃線知識彙總Python
- php 修飾符和魔術方法 (基礎)PHP
- 說說 PHP 的魔術方法及其應用PHP
- reboot和init 6之間的區別boot
- JSON簡介以及用法彙總JSON
- PHP陣列函式彙總PHP陣列函式
- PHP字串函式大彙總PHP字串函式
- PHP部分字串函式彙總PHP字串函式
- PHP表單提交方法彙總PHP
- php class中public,private,protected,static的區別,以及例項PHP
- Java常見知識點彙總(⑫)——==和equals的區別Java
- new/delete 和malloc/free 的區別一般彙總delete
- innerText和innerHTML的區別以及JS函式總結HTMLJS函式