【PHP面向對象(OOP)編程入門教程】18.__call()處理調用錯誤


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

<?php
// 這是一個測試的類,里面沒有屬性和方法
class Test {
}

// 產生一個Test類的對象
$test = new Test();

// 調用對象里不存在的方法
$test->demo("one", "two", "three");

// 程序不會執行到這里
echo "this is a test<br>";
?>

上例出現如下錯誤,程序通出不能繼續執行;

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

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

<?php
// 這是一個測試的類,里面沒有屬性和方法
class Test {
	// 調用不存的方法時自動調用的方法,第一個參數為方法名,第二個參數是數組參數
	function __call($function_name, $args) {
		print "你所調用的函數:$function_name(參數:";
		print_r($args);
		echo ")不存在!<br>";
	}
}

// 產生一個Test類的對象
$test = new Test();

// 調用對象里不存在的方法
$test->demo("one", "two", "three");

// 程序不會退出可以執行到這里
echo "this is a test<br>";
?>

上例輸出結果為:

你所調用的函數: demo(參數:Array ( [0] => one [1] => two [2] => three ) )不存在!
this is a test

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM