PHP сообщение об исключении - PullRequest
3 голосов
/ 01 июля 2011

Я пытаюсь отобразить пользовательское сообщение об ошибке, если метод не существует как 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)
  }
}

но это не работает. В браузере появляется сообщение «Соединение закрыто удаленным сервером»: |

1 Ответ

3 голосов
/ 01 июля 2011

Вы бы использовали функцию 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...