繁体   English   中英

PHP中的“ @”符号,例如“ @ $ name [1]”吗?

[英]'@' symbol in php, e.g. '@$name[1]'?

所有,

PHP中“ @”符号的含义是什么? 例如,此语句表示什么意思:

$sd = (@$argv[1]) ? getdate(strtotime($argv[1])) : getdate();

我了解三元运算符'?',但不知道'@'是什么意思...

该代码是(非常好!)cs75.net哈佛扩展课程的示例代码。

谢谢,

JDelage

@ 符号可抑制在函数(或表达式)过程中可能产生的任何错误

PHP支持一种错误控制运算符:at符号(@)。 当在PHP表达式中添加前缀时,该表达式可能生成的任何错误消息都将被忽略。

如果可能的话,应该避免错误抑制,因为它不仅会抑制试图停止的错误,而且还会抑制出乎意料之外的错误。 这将使调试成为一场噩梦。

@抑制来自表达式的任何错误消息,即是否设置了E_NOTICE

$argv = Array("Only one object.");
if ($argv[1]) { print "Argv[1] set"; }

会引起警告,但是

$argv = Array("Only one object.");
if (@$argv[1]) { print "Argv[1] set"; }

根本不会打印任何东西。

不过请记住,使用它是更好的做法

if (!empty($var)) { print "Argv[1] is set and non-false."; }

代替。

对于那些无法检查$argv[1]并不想看到警告告诉他多么懒惰的程序员来说,这是一个解决方案。 也称为错误抑制

其他人解释说@禁止显示错误消息。 来自Ilia Alshanetsky关于“ PHP和性能”的演讲的有趣事实:

错误阻止运算符是PHP字母表中最昂贵的字符。 这个看似无害的运算符实际上在后台执行相当密集的操作:

$old = ini_set("error_reporting", 0);
action();
ini_set("error_reporting", $old);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM