Почему эта функция error_handler возвращает NULL? - PullRequest
0 голосов
/ 15 октября 2018

У меня есть класс с именем Error, который при загрузке зарегистрирует функцию с именем errorHandler, используя метод set_error_handler в PHP.Однако эта функция вернет NULL, если функция не загружается или если PHP использует встроенный обработчик ошибок по умолчанию.Я не могу понять, почему моя функция не принимается.У кого-нибудь есть хорошие догадки?

<?php
declare (strict_types = 1);

namespace Request\Configuration;

use Errors\Exception\FatalException;

class Error extends Template
{
    public static function load(): void
    {
        $result = set_error_handler('self::errorHandler', error_reporting());
        var_dump($result);
    }

    public static function errorHandler(
        int $number,
        string $message,
        string $file = null,
        int $line = null,
        array $context = null
    ) {
        throw new FatalException('PHP_ERROR: ' . $message, 0);
    }
}

Этот класс при загрузке возвращает NULL.

1 Ответ

0 голосов
/ 15 октября 2018

Хорошо, после долгих отладок и исследований я нашел причину для этого.Функция set_error_handler () будет возвращать только текущую функцию-обработчик ошибок до момента регистрации новой.Это странная функциональность.Поэтому, если вы хотите узнать, была ли она успешно зарегистрирована, вам нужно вызвать эту функцию дважды.Поэтому, когда эта функция возвращала NULL, это было потому, что ранее зарегистрированная функция была встроенной в PHP, поэтому она просто возвращала NULL.Остерегайтесь этого, это странная функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...