我有一个名为Error
的类,该类在加载时将使用PHP中的errorHandler
方法注册一个名为set_error_handler
的函数。但是,如果函数加载失败或PHP使用默认的内置错误处理程序,则此函数将返回NULL
。我无法弄清楚为什么我的功能没有被接受。有人有什么好猜测吗?
<?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
。
答案 0 :(得分:0)
好吧,经过大量的调试和探索,我找到了造成这种情况的原因。 set_error_handler()函数将仅在注册新函数之前返回当前的错误处理函数。这是一个奇怪的功能。因此,如果要确定注册是否成功,则必须调用此函数两次。因此,当此函数返回NULL
时,是因为先前注册的函数是PHP的内置函数,所以它仅返回了NULL
。请注意,这是一个奇怪的功能。