簡體   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