有没有办法让PHP中止未设置/未定义的变量和数组索引等?

有没有办法让PHP中止未设置/未定义的变量和数组索引等?,php,error-handling,Php,Error Handling,目前,PHP在访问未定义的变量和数组索引时会触发(如果启用了日志记录,则会记录)E_通知“错误”。有没有办法让它在这些上中止,这样我就知道我不会错过任何东西。坦白地说,在我看来,脚本在这种情况下应该中止的情况太多了,因为它将不可避免地破坏执行路径上的某些内容。在所有其他情况下,都有“@”操作符,这就是它的作用,对吗 我知道我可以在任何情况下使用自定义错误处理程序和中止。事实上,我已经使用了一个,但我确实有自己触发通知的地方(当然,E_USER_NOTICE而不是PHP自己的E_NOTICE),而

目前,PHP在访问未定义的变量和数组索引时会触发(如果启用了日志记录,则会记录)E_通知“错误”。有没有办法让它在这些上中止,这样我就知道我不会错过任何东西。坦白地说,在我看来,脚本在这种情况下应该中止的情况太多了,因为它将不可避免地破坏执行路径上的某些内容。在所有其他情况下,都有“@”操作符,这就是它的作用,对吗

我知道我可以在任何情况下使用自定义错误处理程序和中止。事实上,我已经使用了一个,但我确实有自己触发通知的地方(当然,E_USER_NOTICE而不是PHP自己的E_NOTICE),而且我也总是返回false,让PHP自己的内部处理程序完成其工作-记录错误并中止,继续其他所有操作

还有其他一些情况,PHP生成E_通知而我不想中止脚本。基本上,我无法知道某个特定的E_通知是由未设置的变量还是完全无害的条件引起的(无论如何,这些通知应该是由这些条件引起的)

有没有人有一个简洁而非黑客的解决方案?有什么推荐的方法吗


干杯。

我确信没有原生PHP方法可以做到这一点


如果需要,扩展您已经存在的错误处理程序以查看错误消息(
stristr($errmsg,“undefined variable”)…
)和
die()
,这是最好(也是唯一)的方法。

而不是试图绕过PHP的错误处理,我建议您对脚本执行一些约束,并使用PHP的
isset
empty
is_null
函数检查变量。

您可以使用PHP函数注册一个自定义函数,该函数将处理任何PHP错误。将E_NOTICE指定为第二个参数,以便自定义函数只接收E_NOTICE error。然后在该函数中,只需执行“exit;”如果作为错误消息的第二个参数以“Undefined offset:”开头

我不知道你想要什么。您想在通知中中止,但不是每个通知都中止?您想区分几种类型的E_通知,并在某些情况下中止?唯一的方法是检查错误处理程序中的消息,如果消息是关于未定义的变量的,则不要中止。顺便说一句,这是不应该使用的。

这一点很好,尽管我不想在脚本(包括我使用的所有库)中对每个变量都设置“isset”。您愿意吗?@amn如果您必须在每个变量上使用isset,我认为您有一个更大的设计缺陷。我想在使用的第一个未设置的变量或数组键上中止。但你的方法是对的,这也是到目前为止所建议的,我完全沉浸其中。谢谢你抽出时间。