如何在__call中模拟不存在的方法错误?

时间:2013-06-02 21:29:19

标签: php

也许奇怪的问题,但...... 我有一个魔术__call方法,它返回某些类的实例,或者,如果没有这样的类,则在底层对象中调用相同的方法。

public function __call($name, $arguments)
{
    $class = 'My\\Namespace\\' . $name;

    if (class_exists($class, true)) {

        $reflect = new \ReflectionClass($class);
        return $reflect->newInstanceArgs($arguments);

    } elseif (is_callable([$this->connector, $name])) {

        return call_user_func_array([&$this->connector, $name], $arguments);
    } else {
        // ????
    }
}

但是在else阻止怎么办?我可以模拟未定义的方法错误吗?或抛出什么异常是正确的?

1 个答案:

答案 0 :(得分:24)

您可以使用trigger_error手动触发PHP错误:

trigger_error('Call to undefined method '.__CLASS__.'::'.$name.'()', E_USER_ERROR);

请参阅http://php.net/manual/en/function.trigger-error.php