Php 5/7错误类处理


Php 5/7 error class handling

我最近刚升级到php7,在使用try catch

升级一些应用程序时遇到了第一个问题

PHP7现在实现了自己的错误类来处理错误,所以我的旧代码:

try {
    dispatcher::run(new request);
} catch (Exception $e) {
    require_once APP_PATH . 'error.php';
    $error = new error($e);
}

现在抛出错误,因为错误类已经定义:

Cannot declare class error, because the name is already in use in [...]

现在这个问题很容易解决,只是重命名我的错误类,但它让我想知道,有没有一种方法来扩展错误类7,可以兼容php5?

问候……

短的是你不应该这样做,因为这是一个向后不兼容的更改

长答案是肯定的,这是可能的,但是您仍然不应该这样做,因为它仍然可能导致不希望的行为,并且仍然可能需要更改现有的PHP 5实现。

PHP 7中的Error类实现了Exception实现的Throwable接口。我们的想法是有一种区别的方法来识别PHP本身抛出的异常和PHP代码抛出的异常。因此,您在这里所做的$error = new error($e)基本上相当于$error = new Exception($e),这将与PHP 5向后兼容,假设您的自定义Error类与Throwable接口兼容。由于您没有提供您的类实现,我不能肯定地说,但一般来说,如果您还没有在PHP 5中扩展Exception,我多少会怀疑它会。