我最近切换到报告PHP Notices的新设置;我的代码工作正常,没有这些通知被修复,但我想知道是否有必要修复每一个并留下他们报告或只是忽略它们并关闭通知报告。
对此有何不同意见?是否有与通知相关的最佳做法?
答案 0 :(得分:18)
错误是错误。必须在代码运行之前修复它们。
警告是警告。他们警告你,你正在做的事情可能是一个坏主意,即使它现在对你有效(或似乎有效)。所以他们也应该修好。
通知是通知。他们应该被注意到。由此得名。它可能不是您的代码生成某些问题的问题,但是您应该根据具体情况进行检查和判断。
当然,如果你没有得到400条通知,则更容易注意到通知。因此,尝试消除它们有很大的好处。它使你尚未注意到的那些变得更加引人注目。
答案 1 :(得分:9)
是的,我会删除我编写的任何PHP代码的通知,即使它只是在我调查了它的所有实例后关闭了特定的通知ID。通知(即未定义的索引,初始化变量)通常表示您忘记预期的情况。你应该调查每一个,消除真正的问题,然后可能压制其他问题(用注释说明原因)。
PHP手册本身说明“NOTICE消息会警告你关于糟糕的风格”,所以我猜官方的“最佳实践”几乎就是我概述的内容。遵循良好的风格,除非你有正当理由不这样做。
答案 2 :(得分:3)
这取决于哪些通知 - 大多数通知都是代码异味的证据 - 未定义的数组索引等。如果您确实禁止通知,请在旁边留下注释,指出您认为应该将其抑制的原因。
PHP.net说:
注意:在启用期间启用E_NOTICE 发展有一些好处。对于 调试目的:注意消息 将警告你可能的错误 你的代码。例如,使用 未分配的值会被警告。它是 找到拼写错误非常有用 节省调试时间。注意 消息会警告你坏事 样式。例如,$ arr [item]是 最好写成$ arr ['item'] 因为PHP试图将“item”视为 不变。如果它不是常量,PHP 假设它是一个字符串索引 阵列。
我会将每个通知视为改进代码的免费机会。 :)
答案 3 :(得分:2)
它们被称为警告,因为您的程序仍然有效 - 但这意味着您做错了什么。如果你有时间做它并且你希望代码“干净”并且可能是好的,修复它们。如果收到警告,你的代码就不好了。
......警告可能会导致错误:
如果你得到一个未定义的变量警告,则表示你没有检查是否存在变量。如果在MySQL查询中使用此变量怎么办?它会失败并破坏你的程序。
不要在实时网站上显示警告。它们将部分代码呈现给外部。
最好的方法是以避免警告的方式编码。 ;)
答案 4 :(得分:0)
在生产环境中,您不应显示任何通知。
即使他们使您的申请崩溃。
这只是一个安全提示。
如果你从旧的php版本迁移到最近的版本,你至少应该看一下通知,知道它是什么。 有时它是关于安全性的,有时只是告诉你这个函数已被弃用。
除非你真的知道自己在做什么,否则你也应该注意这些通知。
答案 5 :(得分:0)
尝试访问未定义的变量和未定义的索引之类的东西在每个严肃的程序员的书中都是严重的错误,所以我真的不明白为什么他们选择它是你可以注意到并耸耸肩走开的东西。我知道的每一个其他编译器都会在那个确切的位置中止该程序。
我总是会修复它们,它们几乎总是导致更糟糕的错误。