PHP - вызов функции в объекте с помощью set_error_handler () - PullRequest
8 голосов
/ 26 ноября 2008

Я пытаюсь использовать это в своем классе страниц. Я только начал использовать объекты в PHP, поэтому я все еще немного невежествен (но изучаю столько, сколько могу). Это в моей page() функции (так называемой, когда есть новый экземпляр страницы)

set_error_handler('$this->appendError');

Это вызывает ошибку

Предупреждение: set_error_handler () ожидает, что аргумент (appendError) будет действительным обратным вызовом

Теперь, как мне установить внутреннюю функцию класса при передаче функции в виде строки. Это не возможно? Должен ли я использовать обычную функцию, которая затем вызывает функцию класса и отправляет через все аргументы? Это звучит немного громоздко для меня.

Или я пропустил проблему? Я пытался заставить мой appendError возвращать строку и выводить эхо ... но он все равно не играет хорошо.

Любая помощь будет принята с благодарностью.

Спасибо !!

Ответы [ 2 ]

22 голосов
/ 26 ноября 2008

Мало проблем с этим.

Первый:

'$this->appendError'
это ного. Он не интерпретирует $ this для текущего класса, php интерпретирует его как строку '$ this'.

Второй: Попробуйте

set_error_handler(array($this, 'appendError'));

Если это не сработает, замените $ this именем класса и используйте его статически.

1 голос
/ 26 ноября 2008

Прочитайте документацию по обратному вызову php.net . Я думаю, что пример 3 ближе всего к тому, что вы хотите:

// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...