在使用error_reporting()
或ini_set('error_reporting')
在我的脚本中时,两者之间是否存在任何功能差异?一种方法优于另一种方法吗?
对于它的价值,我看到许多框架都使用error_reporting()
,但这两个选项似乎只在运行时设置,然后在脚本执行后在 php.ini 中重置为默认值。
在使用error_reporting()
或ini_set('error_reporting')
在我的脚本中时,两者之间是否存在任何功能差异?一种方法优于另一种方法吗?
对于它的价值,我看到许多框架都使用error_reporting()
,但这两个选项似乎只在运行时设置,然后在脚本执行后在 php.ini 中重置为默认值。
唯一小的功能差异似乎是在无法更改设置时返回并ini_set
始终返回旧的错误级别。false
error_reporting
“通往罗马的两条路”:ini_set('error_reporting', ) 覆盖了 php.ini 文件中设置的参数。error_reporting() 接收级别编号或级别 ID
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
这两个选项都会在脚本结束执行之前生效。下一个将再次使用 .ini 中定义的参数。
它们在功能上是相同的,但如果您使用的 IDE 知道 PHP 函数名称,这是确保您不会意外输入要设置的指令名称的简单方法。
来自PHP 手动输入error_reporting()
的示例部分:
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
此外,即使文档声明签名为error_reporting
:
int error_reporting ([ int $level ] )
,这并不完全正确,因为您可以设置 astring
并使用以下命令读回ini_get
:
error_reporting('123 hello world');
var_dump(ini_get('error_reporting'));
产生:
string(15) "123 hello world"
所以,error_reporting($x)
在语义上等价于ini_set('error_reporting', $x)
,
并且error_reporting()
在语义上等价于(int)ini_get('error_reporting')
。