PHP 中的严格模式
2022-08-30 09:02:04
其他具有自动变量声明的语言 - 如Perl - 具有严格模式。
通过激活此严格模式,需要变量声明,并且 Perl 会在您尝试使用未声明的变量时立即引发错误。
PHP是否提供类似的功能?
其他具有自动变量声明的语言 - 如Perl - 具有严格模式。
通过激活此严格模式,需要变量声明,并且 Perl 会在您尝试使用未声明的变量时立即引发错误。
PHP是否提供类似的功能?
有点。您可以在错误报告中激活该级别。(此处为常量列表。E_NOTICE
未声明变量的每个用法实例都将引发 .E_NOTICE
错误级别还将引发这些通知,以及有关如何优化代码的其他提示。E_STRICT
error_reporting(E_STRICT);
终止脚本
如果您真的很认真,并且希望脚本终止,而不是在遇到未声明的变量时仅输出通知,则可以构建自定义错误处理程序。
一个工作示例,它仅处理其中包含“未定义变量”的 s,并将其他所有内容传递给默认的 PHP 错误处理程序:E_NOTICE
<?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
?>