我看到过在某些函数前使用@,比如:
$fileHandle = @fopen($fileName, $writeAttributes);
这个符号有什么用?
我看到过在某些函数前使用@,比如:
$fileHandle = @fopen($fileName, $writeAttributes);
这个符号有什么用?
当前回答
PHP支持一个错误控制操作符:@符号。当在PHP中添加到表达式前时,该表达式可能生成的任何错误消息都将被忽略。
如果您已经使用set_error_handler()设置了一个自定义错误处理函数,那么它仍然会被调用,但是这个自定义错误处理函数可以(并且应该)调用error_reporting(),当触发错误的调用前面带有@时,它将返回0。
<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
die ("Failed opening file: error was '$php_errormsg'");
// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist.
?>
注意:-
1) @-操作符只作用于表达式。
2)一个简单的经验法则是:如果你可以取某个值,你可以在它前面加上@操作符。例如,可以将它前置到变量、函数和包含调用、常量等。不能将其前置到函数或类定义,或if和foreach等条件结构中。
警告:-
目前,“@”错误控制操作符前缀甚至将被禁用 将终止脚本的严重错误的错误报告 执行。除此之外,这意味着如果你使用“@”来 抑制某个函数的错误,或者该函数不可用 或者是打错了,脚本就会死,没有 说明原因。
其他回答
@抑制错误信息。
它被用于如下代码片段:
@file_get_contents('http://www.exaple.com');
如果域名“http://www.exaple.com”不可访问,则会显示错误,但没有显示@。
它抑制错误。
参见手册中的错误控制操作符:
PHP支持一个错误控制操作符:@符号。当在PHP中添加到表达式前时,该表达式可能生成的任何错误消息都将被忽略。 如果你已经用set_error_handler()设置了一个自定义错误处理函数,那么它仍然会被调用,但是这个自定义错误处理函数可以(并且应该)调用error_reporting(),当触发错误的调用前面有@…
它抑制错误消息-请参阅PHP手册中的错误控制操作符。
PHP支持一个错误控制操作符:@符号。当在PHP中添加到表达式前时,该表达式可能生成的任何错误消息都将被忽略。
如果您已经使用set_error_handler()设置了一个自定义错误处理函数,那么它仍然会被调用,但是这个自定义错误处理函数可以(并且应该)调用error_reporting(),当触发错误的调用前面带有@时,它将返回0。
<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
die ("Failed opening file: error was '$php_errormsg'");
// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist.
?>
注意:-
1) @-操作符只作用于表达式。
2)一个简单的经验法则是:如果你可以取某个值,你可以在它前面加上@操作符。例如,可以将它前置到变量、函数和包含调用、常量等。不能将其前置到函数或类定义,或if和foreach等条件结构中。
警告:-
目前,“@”错误控制操作符前缀甚至将被禁用 将终止脚本的严重错误的错误报告 执行。除此之外,这意味着如果你使用“@”来 抑制某个函数的错误,或者该函数不可用 或者是打错了,脚本就会死,没有 说明原因。
还要注意,尽管错误被隐藏,任何自定义错误处理程序(使用set_error_handler设置)仍将执行!