国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php面向對象__call處理錯誤調用技巧

2024-09-04 11:43:35
字體:
來源:轉載
供稿:網友

在提到__call之前,先來看一個實例的測試結果,以便更好地去了解__call方法的作用.在調用對象中不存在的方法時就會出現系統報錯,然后程序退出不能繼續執行。如果在類中添加一個“魔術”方法__call(),則調用對象中不存在的方法時就會自動調用該方法,并且程序可以繼續向下執行。

可以通過在__call()方法中的設置,提示用戶調用的方法及需要的參數列表內容不存在。__call()方法需要兩個參數,第一個參數是調用不存在的方法時,接受這個不存在的方法的方法名,并將這個不存在的方法中,使用的參數列表形成數組傳給__call()方法中的第二個參數。

實例代碼如下:

  1. <?php 
  2.     //這是一個測試的類,里面沒有屬性和方法  
  3.     class Test  
  4.     {  
  5.     } 
  6.  
  7.     //產生一個Test類的對象 
  8.     $test=new Test(); 
  9.  
  10.     //調用對象里不存在的方法 
  11.     $test->demo("one""two""three"); 
  12.  
  13.     //程序不會執行到這里 
  14.     echo "this is a test<br>"
  15.  
  16. ?> 

運行結果:Fatal error: Call to undefined method Test::demo()

我們知道,程序的運行結果拋出了錯誤提示,在運行的過程中拋出錯誤后就已經中斷了,以致”$Person->say();“這個正確的方法也不能再繼續運行。看一下上面的代碼就知道,Person類并沒有代碼錯誤,錯就錯在實例化Person類的過程中調用了Person類中并不存在的方法,如run()和eat()。

在程序的運行中,出現如上拋出的的錯誤是致命性的,整個程序將崩潰。為了處理這種錯誤的同時讓程序繼續執行,我們可以在類中添加一個魔術方法__call,來調用對象中不存在的方法時自動調用該方法,并且使程序可以繼續向下執行。

下面將在上面的代碼的基礎上多添加一個__call方法并調試,實例代碼如下:

  1. <?php 
  2.     //這是一個測試的類,里面沒有屬性和方法  
  3.     class Test  
  4.     { 
  5.         //調用不存的方法時自動調用的方法,第一個參數為方法名,第二個參數是數組參數 
  6.         function __call($function_name$args)  
  7.         {  
  8.             print "你所調用的函數:$function_name(參數:";  
  9.             print_r($args);  
  10.             echo "不存在!<br>n"
  11.         } 
  12.     } 
  13.  
  14.     //產生一個Test類的對象 
  15.     $test=new Test(); 
  16.  
  17.     //調用對象里不存在的方法 
  18.     $test->demo("one""two""three"); 
  19.  
  20.     //程序不會退出可以執行到這里 
  21.     echo "this is a test<br>"
  22. ?> 

運行結果:

你所調用的函數:run(參數:Array ( [0] => teacher ) )不存在!

你所調用的函數:eat(參數:Array ( [0] => child [1] => apple ) )不存在!

Hello, wblog!

這次程序的運行結果不再拋出致命性錯誤,在調用不存在的方法時自動調用了__call方法捕捉處理不存在的方法并提示給用戶,而調用存在的方法時程序正常執行。

總結:在類中添加一個魔術方法__call,在調用對象中不存在的方法時就會自動調用該方法,并且程序可以繼續向下執行。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 育儿| 壤塘县| 漳平市| 米泉市| 高雄市| 常宁市| 庐江县| 黔江区| 保定市| 响水县| 保康县| 凤庆县| 三原县| 天全县| 广水市| 许昌县| 浦东新区| 隆回县| 福州市| 和田市| 林周县| 永嘉县| 大姚县| 谢通门县| 遂溪县| 海口市| 米泉市| 巩留县| 徐汇区| 林芝县| 永平县| 昭平县| 微山县| 涿州市| 黔西| 呼伦贝尔市| 蚌埠市| 惠东县| 万宁市| 江华| 丰宁|