有哪些更好的方法可以避免应用程序逻辑过多,并在需要时isset()
保留查看调试消息 (E_NOTICE) 的能力?
首先假设:E_NOTICE 不是错误,它是用词不当,实际上应该是 E_DEBUG。然而,虽然这对于未设置的变量是正确的(PHP 仍然是一种脚本语言),但一些文件系统函数等也会抛出它们。因此,最好使用 E_NOTICEs进行开发。
然而,并非所有调试通知都是有用的,这就是为什么在整个应用程序逻辑中引入和 @ 是一个常见的(不幸的)PHP 习惯用法。isset()
isset/empty 肯定有许多有效的用例,但总体而言,它似乎是语法盐,实际上会阻碍调试。
这就是我目前使用 error_reporting 小书签和哑开/关开关的原因:
// javascript:(function(){document.cookie=(document.cookie.match(/error_reporting=1/)?'error_reporting=0':'error_reporting=1')})()
if (($_SERVER["REMOTE_ADDR"] == "127.0.0.1")
and $_COOKIE["error_reporting"])
{
error_reporting(E_ALL|E_STRICT);
}
else {/* less */}
但是,这仍然给我留下了启用后要搜索的通知太多的问题。作为解决方法,我可以使用@错误抑制运算符。与 isset() 不同,它不会完全终止调试选项,因为自定义错误处理程序仍然可以接收抑制的 E_NOTICE。因此,将预期的调试通知与潜在问题区分开来可能会有所帮助。
然而,这同样不能令人满意。因此问题。有没有人使用或知道更复杂的 PHP 错误处理程序。我在想象这样的事情:
- 输出未经过滤的错误/警告/通知(使用 CSS 绝对定位?)
- 和 AJAX-whatnot 允许客户端检查和抑制
- 而且还保存了预期和“批准”通知或警告的过滤列表。
当然,某些框架必须已经有这样的用户错误处理程序。
- 基本上我对警告/通知管理感兴趣。
- 完全不需要 E_NOTICE 抑制。
- 需要E_NOTICES 。只是少了些。默认情况下,突出显示我可能关心的那些,而不是预期的。
- 如果我在没有 ?order= 参数的情况下运行,则会出现预期的 NOTICE。这是意料之中的,我不需要多次通知。
- 但是,在完全调试模式下,我确实希望通过所述调试通知的存在(或更有趣的是不存在)来查看未定义变量的存在。-> 这就是我认为他们的目的。避免 isset 会带来语言隐含的打印语句。
- 还要意识到这是关于普通 PHP 表单处理语义适用的用例,而不是必须严格要求的应用程序领域。
哦,我的,有人请帮助重写这个。冗长的解释失败。