首頁 > 後端開發 > PHP問題 > php魔幻(術)法有哪些

php魔幻(術)法有哪些

青灯夜游
發布: 2023-03-11 06:16:01
原創
1707 人瀏覽過

魔幻方法有:「__construct()」、「__destruct()」、「__set()」、「__get()」、「__isset()」、「__unset()」、「__sleep() 」、「___wakeup()」、「__call()」等等。

php魔幻(術)法有哪些

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

php魔幻(術)方法

在物件導向程式設計中,PHP 提供了一系列的魔術方法,這些魔術方法為程式設計提供了許多便利,在PHP 中的作用是非常重要的。 PHP 中的魔術方法通常以__(兩個底線)開始,不需要明確的呼叫而是在某種特定條件下自動呼叫的。

魔術方法 作用
#__construct() 當實例化類別時自動呼叫
__destruct() 類別物件使用結束時自動呼叫
__set() 在為未定義的屬性賦值時自動呼叫
__get() #呼叫未定義的屬性時自動呼叫
__isset() 使用isset() 或empty() 函數時自動呼叫
__unset() 使用unset() 時自動調用
__sleep() 使用serialize 序列化時自動呼叫
__wakeup() #使用unserialize 反序列化時自動呼叫
__call() 呼叫不存在的方法時自動呼叫
__callStatic () 呼叫一個不存在的靜態方法時自動呼叫
__toString() 把物件轉換成字串時自動呼叫
__invoke() 當嘗試把物件當方法呼叫時自動呼叫
__set_state() #當使用var_export() 函數時自動調用,接受一個數組參數
__clone() 當使用clone 複製一個物件時自動調用
#__debugInfo() 使用var_dump() 列印物件資訊時自動呼叫

下面簡單介紹幾個常用的魔術方法:

1、__set() 方法

在為目前環境下未定義或不可見的類別屬性賦值時,會自動調用__set() 方法。定義此方法的語法格式如下:

public function __set($key, $value){
    ... ... ;
}
登入後複製

其中,參數 $key 是要操作的變數名稱,$value 為變數 $key 的值。

2、__get() 方法

在呼叫或取得目前環境下未定義或不可見的類別屬性時,會自動呼叫__get() 方法,定義該方法的語法格式如下:

public function __get($name){
    ... ... ;
}
登入後複製

參數$name 為要操作的變數名稱。

3、__isset() 方法

當在類別外部對類別中不可存取或不存在的屬性使用isset() 或empty() 函數時,會自動呼叫__isset()方法,此方法的語法格式如下:

public function __isset($name){
    ... ... ;
}
登入後複製

參數$name 為要存取的屬性名稱。

isset() 函數可以檢查一個變數是否存在且不為 NULL,傳入一個變數作為參數,如果傳入的變數存在則傳回 true,否則傳回 false。

empty() 函數可以檢查一個變數是否為空,同樣需要傳入一個變數作為參數,如果變數並不存在,或者變數的值等於 FALSE,那麼這個變數會被認為不存在。

類別中的公有成員可以在類別外訪問,而私有成員則無法在類別外存取。也就是說,我們可以使用 isset() 或 empty() 函數來檢查類別中的公有屬性是否存在,而對類別中的私有屬性這兩個函數就無效了。

如果想要使用isset() 或empty() 函數來偵測類別中的私有屬性的話,我們只需要在類別中加入一個__isset() 方法就可以了,當在類別外部使用isset() 或empty() 函數時,會自動呼叫類別裡面的__isset() 方法。

4、__unset() 方法

當在類別外部對類別中不可存取或不存在的屬性使用unset() 函數時,__unset() 方法會被自動調用,該方法的語法格式如下:

public function __unset($name){
    ... ... ;
}
登入後複製

參數$name 為要存取的屬性名稱。

我們先來看看 unset() 函數,unset() 函數的作用是刪除指定的變量,需要傳入一個或多個變數作為參數,另外,該函數沒有傳回值。

同樣,我們也可以使用 unset() 函數在類別外部去刪除類別中的成員屬性。與上面介紹的__isset() 方法相似,如果要刪除類別中的公有屬性的話直接使用unset() 函數即可;如果要刪除類別中的私有屬性的話,則需要在類別中新增一個__unset()方法。

5、__call() 方法

當呼叫類別中一個不可存取或不存在的方法時,__call() 方法會被呼叫。此方法的語法格式如下:

public function __call($name, $arguments){
    ... ... ;
}
登入後複製

其中,$name 為要呼叫的方法名稱,$arguments 為傳遞給 $name 的參數所組成的陣列。

當呼叫的方法不存在時會自動呼叫 __call() 方法,程式會繼續執行下去,從而可以避免當呼叫方法不存在時產生錯誤所導致的程式終止。

6、__clone() 方法

可以使用clone 關鍵字複製對象,當複製完成時,如果定義了__clone() 方法,則新建立的對象(複製產生的對象)中的__clone() 方法會被自動調用,透過該方法我們可以做一些必要的操作。 __clone() 方法的語法格式如下:

public function __clone(){
    ... ... ;
}
登入後複製

此函數不需要傳入參數。

推薦學習:《PHP影片教學

以上是php魔幻(術)法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板