如果某个方法不存在Method()
或getMethod()
,我正在尝试显示自定义错误消息:
public function __call($name, $args = array()){
$getter = "get{$name}";
try {
echo call_user_func_array(array(&$this, $getter), $args);
} catch (Exception $e) {
trigger_error($e->getFile.' on line '.$e->getLine.': Method '.$name.' is not defined.', E_USER_ERROR)
}
}
但它不起作用。我在浏览器中收到“远程服务器关闭的连接”消息:|
答案 0 :(得分:3)
您可以使用method_exists
功能:
if(!method_exists($this, $name))
{
// trigger_error(...);
}
如果您想要调用无效方法的数据,可以使用debug_backtrace
:
class X
{
public function __call($name, $a)
{
$backtrace = debug_backtrace();
$backtrace = $backtrace[1];
// $backtrace['file']
// $backtrace['line']
// $backtrace['function']
// $backtrace['class']
// $backtrace['object']
}
}
$o = new X();
$o->Hello();