2009-08-02 4 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?Что делает @ в этом php?

+0

Возможный дубликат [Ссылка - что означает этот символ в PHP?] (Http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Gordon

ответ

10

Остановить ошибки при отображении и/или входе в систему из этого вызова функции.

0

Он подавляет ошибки. Если вызываемая вами команда имеет сообщение об ошибке или предупреждение, вы не получите распечатку на странице. Вы также можете увидеть, что он используется с подпрограммами mysql_ *.

17

Это Error Control Operator, который будет маскировать (предотвращать отображение) любую ошибку, которую может генерировать функция getimagesize.

Это он вообще не считается хорошей практикой, чтобы использовать его: это делает ваш код действительно труднее отлаживать (если есть ошибка, вы не будете знать об этом):

В настоящее время «@» ошибка-контроль префикс оператора даже отключит отчет об ошибках для критических ошибок , который завершит выполнение скрипта. Среди прочего, это означает, что если вы используете «@» для подавления ошибок из определенной функции и либо не недоступен или был введен неправильно, то сценарий будет умереть прямо там, без указания относительно того, почему ,

Существует даже расширение PHP, называется scream, что отключает этот оператор - может быть очень полезно, когда вы maintaintaing в apllication, который использовал этот оператор много ...

Вообще, лучше установить error_reporting (see also) уровень и display_errors, чтобы ошибки отображались в процессе разработки, а не в производстве - это более полезно, чтобы их всегда прятали!