Как я могу сделать set_error_handler (), называют метод на объекте?

Я думаю об использовании set_error_handler (), что функциональность в PHP обрабатывает большинство ошибок PHP в одном месте (регистрирующий их в файл). Из документации похоже, могу ли я передать имя функции к set_error_handler (). Хороший! Но я сделал, чтобы ErrorManager возразил, который имеет хороший метод входа. Я хочу использовать тот ErrorManager, возражают и пишут специальный метод обработчика ошибок для него и имеют вызов set_error_handler что ErrorManager.

Я мог просто сделать что-то как

set_error_handler($this->customErrorHandler);

? Или это было бы недопустимо?

36
задан James Jones 16 October 2019 в 04:01
поделиться

3 ответа

Передача в массиве объекта и имени вызываемого метода:

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

set_error_handler() принимает обратный вызов calllback:

Некоторые функции, такие как call_user_func() или usort() принимает заданный пользователем функция обратного вызова в качестве параметра. Функции обратного вызова могут быть не только простые функции, но и объект методы, в том числе статический класс методы.

Функция PHP передается по ее имени. как веревка. Любые встроенные или может быть использована пользовательская функция, за исключением таких языковых конструкций, как: array(), echo(), empty(), eval(), exit(), isset(), list(), print() или unset().

Метод инстанцированного объекта это переданный в виде массива, содержащего объект в индексе 0 и имя метода в индексе 1.

Статические методы класса могут быть также пройденный без конкретизации предмета этого класса, пройдя класс имя вместо объекта в индексе 0.

Помимо обычного пользовательского определения функция, create_function() может также использоваться для создания анонимного функция обратного вызова. Начиная с версии PHP 5.3.0 она можно также пройти процедуру закрытия параметр обратного вызова.

(ударение добавлено)

53
ответ дан 27 November 2019 в 05:53
поделиться

в PHP 5. 3 вы могли бы сделать это в закрытом виде:

$that = $this;
set_error_handler( function() use ($that) { $that->customErrorHandler(); } );
6
ответ дан 27 November 2019 в 05:53
поделиться

set_error_handler принимает в качестве параметра обратный вызов .

Цитируя эту страницу :

Метод инстанцированного объекта - это переданный в виде массива, содержащего объект в индексе 0 и имя метода в индексе 1.


В вашем случае, вам нужен обратный вызов, соответствующий методу (Called 'customErrorHandler') объекта (здесь, $this); тогда обратный вызов будет :

array($this, 'customErrorHandler')

Таким образом, вы бы использовали эту часть кода :

set_error_handler(array($this, 'customErrorHandler'));
4
ответ дан 27 November 2019 в 05:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: