@符号在PHP中的用途是什么?我见过@在某些功能面前,如下所示:$fileHandle = @fopen($fileName, $writeAttributes);这个符号有什么用?
3 回答
富国沪深
TA贡献1790条经验 获得超9个赞
PHP支持一个错误控制操作符:at符号(@)。当添加到PHP中的表达式时,该表达式可能生成的任何错误消息都将被忽略。
如果您已将自定义错误处理程序函数设置为 SET错误处理程序() 然后它仍然会被调用,但是这个自定义错误处理程序可以(而且应该)调用 错误报告() 当触发错误的调用前面有@.时,它将返回0。
www说
TA贡献1775条经验 获得超8个赞
@
@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"
如果您用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;}
- 3 回答
- 0 关注
- 783 浏览
添加回答
举报
0/150
提交
取消