首頁 >後端開發 >php教程 >php物件導向OOP—__call處理呼叫錯誤

php物件導向OOP—__call處理呼叫錯誤

WBOY
WBOY原創
2016-08-08 09:23:06947瀏覽

在程式開發中,如果在使用物件呼叫物件內部方法時候,呼叫的這個方法不存在那麼程式就會出錯,然後程式退出不能繼續執行。那麼可不可以在程式呼叫物件內部 不存在的方法時,提示我們呼叫的方法及使用的參數不存在,但程式還可以繼續執行,這個時候我們就要使用在呼叫不存在的方法時自動呼叫的方 法“__call()”。

//這是一個測試的類,裡面沒有屬性和方法
class Test
{
}
//產生一個Test類的物件
$test = new Test();
//產生一個Test類的物件
$test = new Test();
//
//呼叫物件裡不存在的方法
$test->demo("one", "two", "three");
//程式不會執行到這裡
echo "this is a test
";

? >


上例出現以下錯誤,程式通常無法繼續執行;


Fatal error: Call to undefined method Test::demo()

下面我們加上「__call()」方法,這個方法有2個參數,第一個參數為呼叫不存在的方法過程中,在自動呼叫__call()方法時,把這個不存在的方法的方法名稱傳給第一個參數,第二個參數則是把這個方法的多個參數以數組的形式傳進來




//這是一個測試的類,裡面沒有屬性和方法class Test{
////////////個參數為方法名,第二個參數是陣列參數
function __call($function_name, $args) {
print "你所呼叫的函數:$function_name(參數:";
print "你所呼叫的函數:$function_name(參數:";
args);
echo ")不存在!

";


}
}
//產生一個Test類別的物件
$test=new Test();
//呼叫物件裡不存在//呼叫物件裡不存在的方法
$test->demo("one", "two", "three");
//程式不會退出可以執行到這裡
echo "this is a test
";?>


上例輸出結果為:


你所呼叫的函數: demo ) )不存在!
this is a test

炒花生米"大哥,謝謝大哥的分享。

以上就介紹了php物件導向OOP—__call處理呼叫錯誤,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn