導航:首頁 > 知識科普 > php魔術方法有哪些

php魔術方法有哪些

發布時間:2025-01-23 23:24:57

⑴ php中怎麼使用call

__call是php語言里的一個魔術方法,其作用是:當調用的方法不存在時會自動調用這個方法。


語法:

function__call(string$function_name,array$arguments)

{

宏瞎......

}


該方握絕祥法有兩個參數,第一個參數$function_name會自動接收不存在的方法名,第二個$args則以數組的方段搏式接收不存在方法的多個參數。


在類裡面加入:


function__call($function_name,$args)
{
echo"你所調用的函數:$function_name(參數:<br/>";
var_mp($args);
echo")不存在!";
}


當調用一個不存在的方法時(如test()方法):


$p1=newPerson();
$p1->test(2,"test");


輸出的結果如下:


你所調用的函數:test(參數:


array(2){

[0]=>int(2)

[1]=>string(4)"test"

}

)不存在!

⑵ php中常用的魔術方法有哪些

php規定以兩個下劃線__開頭的方法都保留為魔術方法,建議自定義函數的函數名最好避開。
__construct() 實例化類時自動調用。
__destruct() 類對象使用結束時自動調用。
__set() 在給未定義的屬性賦值的時候調用。
__get() 調用未定義的屬性時候調用。
__isset() 使用isset()或empty()函數時候會調用。
__unset() 使用unset()時候會調用。
__sleep() 使用serialize序列化時候調用。
__wakeup() 使用unserialize反序列化的時候調用。
__call() 調用一個不存在的方法的時候調用。
__callStatic()調用一個不存在的靜態方法是調用。
__toString() 把對象轉換成字元串的時候會調用。比如 echo。
__invoke() 當嘗試把對象當方法調用時調用。
__set_state() 當使用var_export()函數時候調用。接受一個數組參數。
__clone() 當使用clone復制一個對象時候調用。

⑶ php魔術方法有哪些

1.constuct()構造函數
通常實例化完一個對象之後,都要對該對象的屬性進行初始化!在實例化一個對象的時候,PHP系統會自動的調用一個名字叫作construct()的方法,我們把這個方法叫作「構造方法」!
2.destruct()析構方法
與構造方法是一對,構造方法是在一個對象「出生」的時候由系統自動調用的,而析構方法是在一個對象「消失」的時候由系統自動調用的!
析構方法的名字叫destruct();注意裡面不能有任何的參數!
3.clone()克隆
觸發時機:是在克隆一個對象的時候,對新對象進行初始化的工作
4.autoload()自動載入類
當調用不存在的類的時候自動調用!
5.tostring()
當將對象當成字元串使用的時候自動調用
6.invoke()
當將對象當成函數使用的時候自動調用
7,set()
當對無法訪問的屬性賦值時自動調用(比如:類外調用私有屬性)
8.get()
當對獲取無法訪問的屬性值的時候自動調用
9.unset()
當銷毀無法訪問的屬性的時候自動調用
10.isset()
當判斷無法訪問的屬性是否存在的時候自動調用
11.call()
當調用無法訪問的普通方法時自動觸發

⑷ PHP8中的魔術方法-PHP8知識詳解

在PHP8中,魔術方法為開發者提供了更靈活的類行為定義方式,它們以兩個下劃線(__)開頭。通過魔術方法,可以實現如對象創建、方法調用、屬性訪問與修改等行為。以下為一些常見魔術方法的簡介:



__construct(): 類的構造函數。當對象創建時自動調用。



__destruct(): 類的析構函數。當對象銷毀時自動調用。



__get($name): 在嘗試讀取不可訪問屬性值時自動調用。



__set($name, $value): 在給不可訪問屬性賦值時自動調用。



__isset($name): 在調用isset()或empty()函數檢查不可訪問屬性時自動調用。



__unset($name): 在調用unset()函數刪除不可訪問屬性時自動調用。



__call($name, $arguments): 在調用不存在或不可訪問方法時自動調用。



__call static($name, $arguments): 在調用不存在或不可訪問靜態方法時自動調用。



__toString(): 在將對象作為字元串輸出時自動調用。



__invoke($arguments): 當嘗試將對象作為函數調用時自動調用。



__clone(): 當對象被克隆時自動調用。



__debugInfo(): 在使用var_mp()函數輸出對象信息時自動調用。



__serialize(): 在對象被序列化時自動調用。



__unserialize($data): 在對象被反序列化時自動調用。



__sleep(): 在對象被序列化時自動調用,返回要序列化的屬性列表。



__wakeup(): 在對象被反序列化時自動調用。



本文主要介紹兩個魔術方法:__set()和__get()。面向對象設計原則強調封裝性,不鼓勵直接訪問類屬性。通過使用__set()和__get(),可以間接訪問類屬性,避免直接訪問,提升代碼的可維護性和安全性。



當嘗試寫入未定義或不可見的成員變數時,會觸發__set()方法。該方法接收變數名稱和值作為參數。



在調用未定義或不可見的成員變數時,會觸發__get()方法。該方法接收要調用的變數名稱作為參數。



以下為使用__set()和__get()的參考代碼示例:



運行結果表明,嘗試訪問未定義成員變數時,會自動調用__set()和__get()方法,實現間接訪問類屬性的功能。

閱讀全文

與php魔術方法有哪些相關的資料

熱點內容
馬原中歸納的方法有什麼局限性 瀏覽:508
燈具遙控安裝方法 瀏覽:984
在家地震預警有哪些方法論 瀏覽:398
氣缸圓柱度的檢測方法 瀏覽:214
東風制動燈故障原因和解決方法 瀏覽:309
簡諧運動研究方法 瀏覽:123
幼兒異物吸入的搶救方法有哪些 瀏覽:210
開衫毛衣尺寸的經典計算方法 瀏覽:356
廣電有線連接方法 瀏覽:826
局解血管的檢查常用方法 瀏覽:987
瑜伽的技巧和方法 瀏覽:833
寫出五種植物的傳播方法 瀏覽:97
治療脾氣差的最佳方法 瀏覽:814
花卉滿天星的種植方法 瀏覽:966
風控未通檢測方法 瀏覽:767
根管治療術的步驟和方法 瀏覽:180
去腳臭的簡單的方法 瀏覽:934
二年級語文教學方法和教學手段 瀏覽:68
學前教育研究方法課題 瀏覽:866
瑜伽胳膊鍛煉方法 瀏覽:124