在PHP中严格模式?

其他具有自动variables声明的语言(比如Perl)具有严格的模式。

通过激活这个严格的模式,variables声明是必需的,只要您尝试使用未声明的variables,Perl就会抛出错误。

PHP提供了类似的function吗?

有点。 您可以在错误报告中激活E_NOTICE级别。 (常量列表在这里 )

每个使用未声明variables的实例都会引发E_NOTICE

E_STRICT错误也会抛出这些通知,以及关于如何优化代码的其他提示。

 error_reporting(E_STRICT); 

终止脚本

如果你真的认真,并希望你的脚本终止,而不是只是在遇到未声明的variables时输出通知,你可以build立一个自定义的error handling程序 。

工作示例只处理其中的“未定义的variables”的注意事项,并将其他所有内容传递给默认的PHPerror handling程序:

 <?php error_reporting(E_STRICT); function terminate_missing_variables($errno, $errstr, $errfile, $errline) { if (($errno == E_NOTICE) and (strstr($errstr, "Undefined variable"))) die ("$errstr in $errfile line $errline"); return false; // Let the PHP error handler handle all the rest } $old_error_handler = set_error_handler("terminate_missing_variables"); echo $test; // Will throw custom error xxxx(); // Will throw standard PHP error ?> 

使用

 error_reporting(-1); 

以显示每个可能的错误,包括E_STRICT ,甚至在未来的PHP版本中添加新的级别和常量。

( 参考 )

是的,inputerror_reporting(E_STRICT|E_ALL); 在你的脚本的开始。

你可以检查error_reporting ,不要忘记设置display_errors 。 请注意,有多个级别的错误报告。

使用

 error_reporting(E_ALL); 

在您的PHP代码的开始。 或者在php.ini文件中设置error_reporting设置,为所有PHP文件设置

PHP 默认情况下警告未声明的variables,您只需要将错误报告级别提升,以便看到通知。 请注意,由于没有特殊的语法来声明PHP中的variables,并且只是通过分配给它来声明一个variables,所以只有在尝试使用未声明的variables的值时才会发出警告。 与其他语言相反,“未声明variables的赋值”不存在,所以PHP不能在那里提醒你。

你可以用set_error_handler()来实现你自己的error handling函数。

然后,您可以根据您的意愿对某些错误级别做出反应。

例如,不是只显示和logging错误消息,而是如果variables没有正确声明或者遇到任何不满意的情况,您可以终止脚本。

这样,您可以对在PHP解释器实例上运行的任何代码执行一个非常严格的策略。

我build议在开发环境和实际生产环境(WWW,公司内联网等)内,报告和处理错误的要求是不同的。 在开发过程中,您将希望尽可能详细地查看和修复问题。

在现场环境中,我认为不是要向用户显示PHP错误消息,而是允许脚本继续使用减less的function(例如,“抱歉,我们目前无法更新您的configuration文件”或将用户redirect到主页等)。 实现这一点的一个方法是通过使用自定义error handling程序为每个环境