Я видел образцы кода, которые используют @
перед 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 поддерживает один оператор управления ошибкой: знак at (@). При добавлении выражения в PHP любые сообщения об ошибках, которые могут быть сгенерированы этим выражением, будут игнорироваться .
Больше здесь .
Использование @
– это всегда плохая практика. Он будет подавлять сообщение об ошибке, если встречается, в то время как сообщения об ошибках чрезвычайно полезны для программиста, а подавление – самоубийство. Судьба PHP должна использоваться в основном не программистами, а случайными пользователями, которые не имеют понятия. У вас есть этот код из одного из последних. Итак, лучше избавиться от всех @
, так что вы сможете увидеть, что произошло, и исправить ошибку.
Обратите внимание, что каждое сообщение об ошибке имеет особое значение и объясняет, в чем проблема. Например, может возникнуть проблема с правами файловой системы или настройка PHP OPEN_BASEDIR, чтобы предотвратить открытие файла. Таким образом, сообщение об ошибке сообщит вам, что делать. Сообщения об ошибках хорошие, а @ – зло.