13

在使用error_reporting()ini_set('error_reporting')在我的脚本中时,两者之间是否存在任何功能差异?一种方法优于另一种方法吗?

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

4

4 回答 4

10

唯一小的功能差异似乎是在无法更改设置时返回并ini_set始终返回旧的错误级别。falseerror_reporting

于 2009-12-23T20:28:18.660 回答
8

“通往罗马的两条路”:ini_set('error_reporting', ) 覆盖了 php.ini 文件中设置的参数。error_reporting() 接收级别编号或级别 ID

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

这两个选项都会在脚本结束执行之前生效。下一个将再次使用 .ini 中定义的参数。

于 2009-12-23T20:32:28.410 回答
4

它们在功能上是相同的,但如果您使用的 IDE 知道 PHP 函数名称,这是确保您不会意外输入要设置的指令名称的简单方法。

来自PHP 手动输入error_reporting()的示例部分:

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
于 2009-12-23T20:26:41.690 回答
0

此外,即使文档声明签名为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')

于 2015-01-26T12:06:45.840 回答