【发布时间】:2021-11-18 10:24:17
【问题描述】:
我们有一个庞大的代码库,当访问未定义的变量或数组键时,我们忽略了来自 php7 的通知。 例如
$somethingThatMayNotExist = $_REQUEST['somethingThatMayNotExist']
PHP8 现在抛出错误。我知道我们应该始终检查密钥是否存在,或者变量是否已定义。但是代码库太大了,我们的单元测试覆盖率很差,我宁愿切换到 php8 并将这些错误作为通知处理(并将值设置为 null)。 这是否可以使用某种自定义错误处理程序?如果有,该怎么做?
【问题讨论】:
-
只需在
$_REQUEST['....']后面添加?? NULL即可消除PHP 8 中的错误。无论如何,忽略通知绝不是一个好主意。 -
@KIKOSoftware 我知道,但找到所有问题也是一项非常耗时的任务,我们不能确定是否找到了所有问题(不仅在 $_REQUEST 变量上)
-
我也遇到过类似的问题,我解决它的方法是。 1. 检查日志文件并检查我可以在那里找到的所有通知。 2. 让所有新的通知和错误通过电子邮件发送给我,并在它们发生时立即解决。现在我的代码库完全没有错误,而且没有那么耗时。大多数错误都是非常基本的。
-
好主意。我们已经有一个错误处理程序,可以发送有关严重错误的邮件。我现在将忽略这些错误并将它们记录到一个特定的位置,我们可以根据发生情况对其进行重构。
-
您可以使用正则表达式搜索和替换,或
sed使用正则表达式搜索和替换,将所有行替换为更新版本。不管代码库有多大;)
标签: php error-handling