我最近刚升级到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
,我多少会怀疑它会。