Подтвердить что ты не робот

Как имитировать ошибку отсутствия существующего метода в __call?

Может быть, странный вопрос, но... У меня есть волшебный метод __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 {
        // ????
    }
}

Но что делать дальше? Могу ли я имитировать неопределенную ошибку метода? Или какое исключение для броска было бы правильным?

4b9b3361

Ответ 1

Вы можете запускать ошибки PHP вручную с помощью trigger_error:

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

См. Http://php.net/manual/en/function.trigger-error.php