Что делает @ в этом php? - PullRequest
       4

Что делает @ в этом php?

1 голос
/ 02 августа 2009
// 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?

Ответы [ 3 ]

17 голосов
/ 02 августа 2009

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

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

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

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

Как правило, лучше установить уровень error_reporting ( см. Также ) и display_errors, чтобы ошибки отображались при разработке, а не в производстве - это гораздо полезнее, чем просто скрывать их!

10 голосов
/ 02 августа 2009

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

0 голосов
/ 02 августа 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...