“@”前缀在 PHP 中有什么作用?
以下代码中的“@”符号有什么作用?
@mkdir(ROOT. "cache/");
PHP 支持一个错误控制运算符:at 符号 (@)。在 PHP 中附加到表达式之前时,该表达式可能生成的任何错误消息都将被忽略。
如果启用了track_errors功能,则表达式生成的任何错误消息都将保存在变量 $php_errormsg 中。此变量将在每次错误时被覆盖,因此,如果要使用它,请尽早检查。
正如评论中所指出的,我也无法想象实际使用此功能的理由 - 编写适当处理错误状态/条件的代码。
如前所述,它是错误抑制运算符。
但尚未指出的是,使用是非常糟糕的做法 - 错误不应该默默地失败。
检查错误返回,并在使用异常的位置使用 try/catch 块。
在具体示例中...
@mkdir(ROOT. "cache/");
...它忽略 来自 的任何错误。文档说它在失败时返回,所以你应该做...mkdir()
FALSE
if ( ! mkdir(ROOT. "cache/")) {
// Handle error.
}