为了账号安全,请及时绑定邮箱和手机立即绑定

@符号在PHP中的用途是什么?

@符号在PHP中的用途是什么?

PHP
慕斯709654 2019-06-15 17:54:10
@符号在PHP中的用途是什么?我见过@在某些功能面前,如下所示:$fileHandle = @fopen($fileName, $writeAttributes);这个符号有什么用?
查看完整描述

3 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

它会抑制错误消息-请参阅差错控制算子在PHP手册中。


查看完整回答
反对 回复 2019-06-15
?
富国沪深

TA贡献1790条经验 获得超9个赞

它能抑制错误。

看见差错控制算子在手册中:

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

如果您已将自定义错误处理程序函数设置为SET错误处理程序()然后它仍然会被调用,但是这个自定义错误处理程序可以(而且应该)调用错误报告()当触发错误的调用前面有@.时,它将返回0。


查看完整回答
反对 回复 2019-06-15
?
www说

TA贡献1775条经验 获得超8个赞

这个@符号是差错控制操作者(又称“沉默”或“关闭”操作员)。它使PHP禁止由关联表达式生成的任何错误消息(注意、警告、致命等)。它的工作原理就像一个一元运算符,例如,它具有优先性和结合性。以下是一些例子:

@echo 1 / 0;// generates "Parse error: syntax error, unexpected T_ECHO" since // echo is not an expressionecho @(1 / 0);
// suppressed "Warning: Division by zero"@$i / 0;// suppressed "Notice: Undefined variable: i"// displayed "Warning: Division by zero"@($i / 0);
// suppressed "Notice: Undefined variable: i"// suppressed "Warning: Division by zero"$c = @$_POST["a"] + @$_POST["b"];
// suppressed "Notice: Undefined index: a"// suppressed "Notice: Undefined index: b"$c = @foobar();echo "Script was not terminated";
// suppressed "Fatal error: Call to undefined function foobar()"// however, PHP did not "ignore" the error and terminated the
// script because the error was "fatal"

如果使用自定义错误处理程序而不是标准的PHP错误处理程序,会发生什么情况:

如果您用SET_ERROR_HANDER()设置了一个自定义错误处理程序函数,那么它仍然会被调用,但是这个自定义错误处理程序可以(而且应该)调用Error_Reporting(),当触发错误的调用前面有一个@时,这个函数将返回0。

下面的代码示例说明了这一点:

function bad_error_handler($errno, $errstr, $errfile, $errline, $errcontext) {
    echo "[bad_error_handler]: $errstr";
    return true;}set_error_handler("bad_error_handler");echo @(1 / 0);// prints "[bad_error_handler]: Division by zero"

错误处理程序没有检查@符号是有效的。手册建议如下:

function better_error_handler($errno, $errstr, $errfile, $errline, $errcontext) {
    if(error_reporting() !== 0) {
        echo "[better_error_handler]: $errstr";
    }
    // take appropriate action
    return true;}


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 783 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信