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

php
2022-08-30 14:57:54

也许奇怪的问题,但是...我有一个神奇的__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 {
        // ????
    }
}

但是在其他块中该怎么办?是否可以模拟未定义的方法错误?或者抛出什么异常是正确的?


答案 1

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

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

查看 http://php.net/manual/en/function.trigger-error.php


答案 2

推荐