我看到过在某些函数前使用@,比如:
$fileHandle = @fopen($fileName, $writeAttributes);
这个符号有什么用?
我看到过在某些函数前使用@,比如:
$fileHandle = @fopen($fileName, $writeAttributes);
这个符号有什么用?
当前回答
在这里可能值得添加的是,当使用@时,你应该注意一些指针,以完整地查看这篇文章:http://mstd.eu/index.php/2016/06/30/php-rapid-fire-what-is-the-symbol-used-for-in-php/
即使前面有@符号,错误处理程序仍然会被触发,这只是意味着设置了0的错误级别,这必须在自定义错误处理程序中进行适当处理。 在包含前加上@将把包含文件中的所有错误设置为0的错误级别
其他回答
还要注意,尽管错误被隐藏,任何自定义错误处理程序(使用set_error_handler设置)仍将执行!
在这里可能值得添加的是,当使用@时,你应该注意一些指针,以完整地查看这篇文章:http://mstd.eu/index.php/2016/06/30/php-rapid-fire-what-is-the-symbol-used-for-in-php/
即使前面有@符号,错误处理程序仍然会被触发,这只是意味着设置了0的错误级别,这必须在自定义错误处理程序中进行适当处理。 在包含前加上@将把包含文件中的所有错误设置为0的错误级别
@抑制错误信息。
它被用于如下代码片段:
@file_get_contents('http://www.exaple.com');
如果域名“http://www.exaple.com”不可访问,则会显示错误,但没有显示@。
它抑制错误。
参见手册中的错误控制操作符:
PHP支持一个错误控制操作符:@符号。当在PHP中添加到表达式前时,该表达式可能生成的任何错误消息都将被忽略。 如果你已经用set_error_handler()设置了一个自定义错误处理函数,那么它仍然会被调用,但是这个自定义错误处理函数可以(并且应该)调用error_reporting(),当触发错误的调用前面有@…
假设我们没有使用“@”操作符,那么我们的代码看起来像这样:
$fileHandle = fopen($fileName, $writeAttributes);
如果我们试图打开的文件没有找到该怎么办?它将显示一条错误消息。
为了抑制错误消息,我们使用“@”操作符,例如:
$fileHandle = @fopen($fileName, $writeAttributes);