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

@符号在PHP中用于抑制错误消息的显示,它作为一元运算符阻止关联表达式可能产生的错误(如警告和致命错误)。当设置自定义错误处理程序时,@符号仍能生效,自定义错误处理程序可以通过Error_Reporting()来判断是否被@符号抑制。错误处理程序应检查error_reporting()的返回值,若为0则表示错误已被抑制。
摘要由CSDN通过智能技术生成

76dd74e64f3d7ac23575049ca6372d6b.png

www说

这个@符号是差错控制操作者(又称“沉默”或“关闭”操作员)。它使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;}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值