PHP 函数和@functions

Posted

技术标签:

【中文标题】PHP 函数和@functions【英文标题】:PHP functions and @functions 【发布时间】:2011-04-28 10:40:14 【问题描述】:

基本上,我见过有人在调用函数之前使用@,不是针对每个函数,而是针对某种扩展函数,例如file_get_contents()mysql_connect() 等。

是的,问题是:在函数调用之前存在这些@s 的目的是什么?

或者换句话说,@file_get_contents()file_get_contents()有什么区别?

【问题讨论】:

见Reference - What does this symbol mean in php? What does @ mean in PHP?的可能重复 【参考方案1】:

@ 是一个error control operator。基本上它是在抑制错误。

【讨论】:

【参考方案2】:

我对函数前面使用的 @ 也有类似的疑问。 为了避免这种情况,我在函数调用之前进行了一些验证。 我的例子是:

if ( is_file($filename) ) $timestamp = filemtime( $filename );

【讨论】:

【参考方案3】:

@function 不会在其 html 输出中显示任何错误消息,而常规函数调用会。

【讨论】:

@fabrik 与您的原因相同。但是,虽然你的模棱两可(只是“输出”),但这个是清晰的 HTML 输出,当然,这是一派胡言。错误控制与程序的输出无关。 @fabrik:老实说,我不明白你是在嘲讽还是真的在问。无论哪种方式我都不在乎。 @Col。弹片:要求您输入您对错误控制的定义,以便我们所有人获得对该主题的更多了解。我同意我的回答缺乏深度,因为我只是说了我理解的内容:) 谢谢。 他不是在和你说话。但是对于投反对票的人。现在明白了?错误控制由两部分组成:标准错误输出destinationlevel错误。 @ 运算符和error_reporting 设置都是错误的控制级别。 (@ 将其设置为 0)而 log_errorsdisplay_errors 设置负责目标。后者负责您所说的:HTML 输出。虽然 @ 与它无关,但 id 永远不应该用于此目的【参考方案4】:

这是 PHP 的 error control operator 用于抑制函数调用产生的任何错误。

【讨论】:

【参考方案5】:

函数前面的@ 符号可防止在调用函数时显示错误。

【讨论】:

以上是关于PHP 函数和@functions的主要内容,如果未能解决你的问题,请参考以下文章

shell 实现跳板机

php构造函数的PHP 5 构造函数和析构函数

php一个抽奖函数(自定义中奖项数和概率)

PHP匿名函数和闭包

PHP类和函数注释大全

浅析PHP中的闭包和匿名函数