背景:在调用对象中不存在或不可访问(私有受保护)的方法时,程序抛出致命的错误终止程序的进行。
为了处理这种错误的同时让程序继续执行,我们可以在类中添加一个魔术方法__call,来调用对象中不存在的方法时自动调用该方法,并且使程序可以继续向下执行。
<?php
class Person{
function say(){
echo "Hello, wblog!<br>"
}
function __call($funName, $args) { //声明此方法用来处理调用对象中不存在的方法
echo "你所调用的函数:".$funName."不存在!<br>\n";
}
}
$Person=new Person();
$Person->run("teacher"); //调用对象中不存在的方法,则自动调用了对象中的__call()方法
$Person->say();
?>
运行结果:
你所调用的函数run不存在!
Hello, wblog!
总结:
在类中添加一个魔术方法__call,在调用对象中不存在的方法时就会自动调用该方法,并且程序可以继续向下执行。