2009-08-02 32 views
1
// Get the image information and display the image: 
    if ($image = @getimagesize ("../uploads/$pid")) { 
     echo "<div align=\"center\"><img src=\"show_image.php?image=$pid&name=" . urlencode($row['image_name']) . "\" $image[3] alt=\"{$row['print_name']}\" /></div>\n"; 
    } else { 
     echo "<div align=\"center\">No image available.</div>\n"; 
    } 

@getimagesize中的@ do做了什麼?@在這個php中做什麼?

+0

可能的重複[參考 - 這個符號在PHP中意味着什麼?](http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Gordon 2011-11-26 10:29:55

回答

10

它停止顯示和/或從該特定函數調用記錄錯誤。

0

它抑制了出現的錯誤。如果您正在調用的命令有錯誤或警告狀態,則不會在頁面中獲得任何打印輸出。你也可以看到它與mysql_ *例程一起使用。

17

這是一個Error Control Operator,它會掩蓋(防止顯示)getimagesize函數可能產生的任何錯誤。

它,它一般不認爲是一個很好的做法是使用它:它使你的代碼真的很難調試(如果有錯誤,你不會知道它)

目前「@」錯誤控制 運算符前綴將甚至禁用 關鍵錯誤 的錯誤報告將終止腳本執行。 除其他事項外,這意味着如果 您使用「@」從 某些功能抑制的錯誤,要麼是不 使用或已被錯誤地輸入時, 腳本會沒有任何跡象 ,爲什麼死在那裏。

甚至有一個PHP擴展,稱爲scream,禁用此操作 - 當你maintaintaing是使用該運營商有很多的apllication可以是相當有用的......

一般情況下,最好是設置error_reportingsee also)級別和display_errors,以便在開發過程中顯示錯誤,而不是在生產中 - 這樣做總是隱藏它們更有用!