error_reporting()和ini_set('error_reporting')之间的区别?

时间:2009-12-23 20:19:10

标签: php error-reporting

在我的脚本中使用error_reporting()ini_set('error_reporting')时,两者之间是否存在功能差异?一种方法比另一种方法更受欢迎吗?

对于它的价值,我看到许多框架使用error_reporting(),但这两个选项似乎只在运行时设置,然后在脚本执行后重置回php.ini中的默认值。

4 个答案:

答案 0 :(得分:9)

唯一的小功能差异似乎是ini_set在无法更改设置时返回falseerror_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')