@ 函数调用前的字符

Posted

技术标签:

【中文标题】@ 函数调用前的字符【英文标题】:@ character before a function call 【发布时间】:2011-01-01 10:28:39 【问题描述】:

php中这两个函数调用有什么区别?

init_get($somevariable);

@init_get($somevariable);

【问题讨论】:

"@" 将关闭任何 php 错误和通知 【参考方案1】:

正如已经回答的那样,@ 将阻止错误(如果有)出现。 就性能而言,不建议这样做。

php正在做的是:

读取错误显示状态 将错误显示设置为不显示错误 运行您的函数 将错误显示设置为之前的状态

如果您不希望出现任何错误,请使用error_reporting(0);

或者只是编写无错误代码:P

【讨论】:

更喜欢放零,但如果这样可行,那就太好了:) 您无法控制的功能(例如邮件)呢?还有哪些其他选择?我现在正在使用@,但如果能够以不同的方式进行操作会很棒【参考方案2】:

“@”将消除您的函数可能引发的任何 php 错误。

【讨论】:

但是如果你把@放在PHP的trigger_error函数前面呢?我在一些代码中看到了这一点,但到目前为止它的行为对我来说是不一致的。在某些情况下,我确实看到配置的错误处理程序报告了错误,而在其他情况下,它似乎确实被报告了。 @ 将暂时将error_reporting 设置为 0,但不会“抑制”错误。【参考方案3】:

正如大家所说,它会停止该特定功能的错误输出。但是,这会大大降低性能,因为它必须更改错误显示设置两次。我建议不要忽略警告或错误,而是修复代码。

【讨论】:

感谢大家的回答。那个代码不是我的,我只是好奇地看phpBB代码,所以我没有性能问题。 :) 再次感谢。【参考方案4】:

http://www.faqts.com/knowledge_base/view.phtml/aid/18068/fid/38

所有 PHP 表达式都可以用“@”前缀调用,这会关闭 该特定表达式的错误报告。

【讨论】:

【参考方案5】:

它可以消除错误和警告。见Error Control Operators。

【讨论】:

以上是关于@ 函数调用前的字符的主要内容,如果未能解决你的问题,请参考以下文章

c++ 函数调用前的类型声明?

有没有自动化的方法来实现构造函数后和析构函数前的虚拟方法调用?

明显调用括号前的表达式必须具有(指向)函数类型

明显调用的表达式前的括号必须具有(指针)函数类型 编译器错误 C2064

明显调用的表达式前的括号必须具有(指针)函数类型

如何从具有隐藏变量名称(参数前的_)或内部+外部(例如 foo(with bar:))的 Objective-C 调用 Swift 函数