【发布时间】:2016-07-04 22:17:08
【问题描述】:
升级到 PHP 7 后,日志几乎被此类错误阻塞:
PHP Warning: Declaration of Example::do($a, $b, $c) should be compatible with ParentOfExample::do($c = null) in Example.php on line 22548
如何在 PHP 7 中使这些错误和仅这些错误静音?
在 PHP 7 之前,它们是
E_STRICT类型的警告 which could be easily dealt with。现在它们只是简单的旧警告。由于我确实想了解其他警告,因此我不能完全关闭所有警告。我没有能力重写这些遗留 API,更不用说使用它们的所有软件了。猜猜看,没有人会为此付出代价。我一开始都没有开发它们,所以我不是罪魁祸首。 (单元测试?十年前不流行。)
我想尽可能避免 any trickery 和
func_get_args和类似的东西。我真的不想降级到 PHP 5。
我仍然想了解其他错误和警告。
有没有干净又好的方法来完成这个?
【问题讨论】:
-
这些是
Warnings,而不是Errors。而且你不应该试图让他们“沉默”,而是要解决这个问题。警告的目的是告诉您您的代码将来会遇到问题。 -
@arkascha 我不确定这些 cmets 在这里是否真的必要。诚然,在理想的世界中,您将拥有所有的时间和金钱来愉快地修复遗留代码。但在现实世界中,这通常是不可能的,甚至是不允许的。
-
@arkascha OP 明确指出这是一个次优情况,目前无能为力。我完全同意重新实现并因此可能完全重新设计整个 API 是绝对不现实的,因为目前除了一些额外的日志消息之外“没有问题”(显然是管理层的观点)。这是一个合理的问题,无需如此苛刻。
-
@arkascha 我知道,我想说的是,虽然你是对的,但这在这里没有帮助。 ;)
-
请注意,我写的是 cmets,而不是答案 :-)
标签: php php-7 php-7.2 php-7.1 php-7.0