背景:在调用对象中不存在或不可访问(私有受保护)的方法时,程序抛出致命的错误终止程序的进行。
为了处理这种错误的同时让程序继续执行,我们可以在类中添加一个魔术方法__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,在调用对象中不存在的方法时就会自动调用该方法,并且程序可以继续向下执行。