Heim  >  Artikel  >  Backend-Entwicklung  >  php面向对象OOP—__call处理调用错误

php面向对象OOP—__call处理调用错误

WBOY
WBOYOriginal
2016-08-08 09:23:06886Durchsuche

在程序开发中,如果在使用对象调用对象内部方法时候,调用的这个方法不存在那么程序就会出错,然后程序退出不能继续执行。那么可不可以在程序调用对象内部 不存在的方法时,提示我们调用的方法及使用的参数不存在,但程序还可以继续执行,这个时候我们就要使用在调用不存在的方法时自动调用的方 法“__call()”。

//这是一个测试的类,里面没有属性和方法
class 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_r($args);
echo ")不存在!

";
}
}
//产生一个Test类的对象
$test=new Test();
//调用对象里不存在的方法
$test->demo("one", "two", "three");
//程序不会退出可以执行到这里
echo "this is a test
";
?>

上例输出结果为:

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

上面的内容引自"小炒花生米"大哥,谢谢大哥的分享。

以上就介绍了php面向对象OOP—__call处理调用错误,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP540版本ChangeLog详解(上)Nächster Artikel:ecstore小记