Я видел примеры кода, которые используют @
прежде fopen
как в
$fh = @fopen($myFile, 'w');
Каково значение этого @
?
Подавляет ошибки, которые может отображать выражение.
Подробнее об этом можно прочитать здесь .
Пример:
file_get_contents('file_does_not_exist'); //this shows an error
@file_get_contents('file_does_not_exist'); //this does not
Использование @
всегда является плохой практикой. Он подавляет сообщение об ошибке, если оно возникает, в то время как сообщения об ошибках чрезвычайно полезны для программиста, и подавление этого является самоубийством. Судьба PHP - это использовать в основном не программисты, а случайные пользователи, которые понятия не имеют. Вы получили этот код от одного из последних. Так что лучше избавиться от всех @
, чтобы вы могли увидеть, что произошло, и исправить ошибку.
Обратите внимание, что каждое сообщение об ошибке имеет особое значение и объясняет, в чем проблема.
Например, это может быть проблема с разрешениями файловой системы или настройка PHP OPEN_BASEDIR для предотвращения открытия файла. Итак, сообщение об ошибке подскажет, что делать. Сообщения об ошибках - это хорошо, а @ - зло.
Это символ контроля ошибок PHP.
PHP поддерживает один оператор контроля ошибок: знак at (@). При добавлении к выражению в PHP любые сообщения об ошибках, которые могут быть сгенерированы этим выражением, будут проигнорированы .
Подробнее здесь .