PHP 中的严格模式

2022-08-30 09:02:04

其他具有自动变量声明的语言 - 如Perl - 具有严格模式。

通过激活此严格模式,需要变量声明,并且 Perl 会在您尝试使用未声明的变量时立即引发错误。

PHP是否提供类似的功能?


答案 1

有点。您可以在错误报告中激活该级别。(此处为常量列表。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

 ?>

答案 2

error_reporting(-1);

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

(参考)


推荐