函数调用前的@字符


135

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

init_get($somevariable);

@init_get($somevariable);

“ @”将关闭任何php错误和通知
ErkanÖzkök'16

Answers:


210

“ @”将使您的函数可能引起的任何PHP错误均保持沉默。


但是,如果您将@PHP trigger_error函数放在首位呢?我已经在某些代码中看到了,但是到目前为止,它的行为对于我来说还是不一致的。在某些情况下,我确实看到配置的错误处理程序正在报告该错误,而在其他情况下,似乎确实已报告了该错误。
2016年

2
@将临时设置error_reporting为0,但不会“压制”的错误。
solidgumby


36

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

php在做什么是:

  • 读取错误显示状态
  • 将错误显示设置为不显示任何错误
  • 运行你的功能
  • 将错误显示设置为其以前的状态

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

或者只写免费的bug代码:P


宁愿放零,但如果
可行,

1
那么您无法控制的功能(例如邮件)呢?还有哪些其他选择?我现在正在使用@,但是能够以不同的方式进行操作非常好
spuas


6

众所周知,它停止了该特定功能的错误输出。但是,由于必须两次更改错误显示设置,因此会大大降低性能。我建议不要忽略警告或错误并改正代码。


感谢大家的回答。该代码不是我的,我只是出于好奇而查看phpBB代码,因此我没有性能问题。:) 再次感谢。
nixie 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.