在我的脚本中使用error_reporting()
或ini_set('error_reporting')
时,两者之间是否存在功能差异?一种方法比另一种方法更受欢迎吗?
对于它的价值,我看到许多框架使用error_reporting()
,但这两个选项似乎只在运行时设置,然后在脚本执行后重置回php.ini中的默认值。
答案 0 :(得分:9)
唯一的小功能差异似乎是ini_set
在无法更改设置时返回false
,error_reporting
始终返回旧的错误级别。
答案 1 :(得分:7)
“两条通往罗马的道路”:ini_set('error_reporting',)会覆盖php.ini文件中的参数集。 error_reporting()接收级别编号或级别ID
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
两个选项在脚本结束执行之前生效。下一个将再次使用.ini中定义的参数。
答案 2 :(得分:4)
它们在功能上是相同的,但是如果您使用的是知道PHP函数名称的IDE,这是一种简单的方法,可以确保您不会错误地输入您要设置的指令的名称。
来自PHP's Manual Entry for error_reporting()
的示例部分:
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
答案 3 :(得分:0)
此外,即使文档声明error_reporting
的签名是:
int error_reporting ([ int $level ] )
,它不完全正确,因为您可以设置 string
并使用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')
。