“@”前缀在 PHP 中有什么作用?

2022-08-30 13:09:15

以下代码中的“@”符号有什么作用?

@mkdir(ROOT. "cache/");

答案 1

它禁止显示以下错误

PHP 支持一个错误控制运算符:at 符号 (@)。在 PHP 中附加到表达式之前时,该表达式可能生成的任何错误消息都将被忽略。

如果启用了track_errors功能,则表达式生成的任何错误消息都将保存在变量 $php_errormsg 中。此变量将在每次错误时被覆盖,因此,如果要使用它,请尽早检查。

正如评论中所指出的,我也无法想象实际使用此功能的理由 - 编写适当处理错误状态/条件的代码。


答案 2

如前所述,它是错误抑制运算符。

但尚未指出的是,使用是非常糟糕的做法 - 错误不应该默默地失败。

检查错误返回,并在使用异常的位置使用 try/catch 块。

在具体示例中...

@mkdir(ROOT. "cache/");

...它忽略 来自 的任何错误。文档说它在失败时返回,所以你应该做...mkdir()FALSE

if ( ! mkdir(ROOT. "cache/")) {
   // Handle error.
}

推荐