Я новичок в PHP, и меня смущает то, что некоторые примеры вызывают функцию с префиксом @, например @mysql_ping ().
Для чего это? Поиск в Google не очень помогает, так как @ отбрасывается, а «alias» - недостаточно хорошее ключевое слово.






Поиск в Google по запросу "php at symbol" предполагает, что он просит PHP не отображать никаких сообщений об ошибках, вызываемых вызовом.
@ подавляет ошибки, предупреждения и уведомления.
Вы можете использовать его с хорошими целями, если дополните его настраиваемым обработчик ошибок или должной проверкой переменной $ php_errormsg, чтобы вы могли правильно обрабатывать ошибки.
По моему опыту, такое правильное использование не очень часто встречается, а вместо этого часто используется плохим способом, просто для того, чтобы скрыть ошибки, не действуя на них.
Больше информации на http://www.php.net/manual/en/language.operators.errorcontrol.php
Ужасно полезно подавлять уведомления об ошибках, если в противном случае у вас есть обработчик ошибок.
«Обычно его используют ленивые программисты, которые не хотят проверять коды ошибок» - Совершенно неверно. @ точно так же, как PHP "пытается / поймать" php.net/manual/en/language.operators.errorcontrol.php
Тем не менее, очень, очень далеко от реальной попытки / улова. Стандартный отказ от ответственности «если вы знаете, что делаете и у вас есть обработчики ошибок, то ничего страшного». вздох
@Havenard это не то, как php пытается поймать. Php использует ... подождите ... попробуйте / поймайте (php.net/manual/en/language.exceptions.php). Подавление @ error - это всего лишь подавление ошибок. Он может быть полезен в некоторых случаях, но его следует использовать с осторожностью.
Подавить сообщения об ошибках: http://bytes.com/forum/thread10951.html
Он подавляет вывод сообщений об ошибках. В отличие от другого комментатора, я думаю, что его использование является хорошей практикой программирования (особенно, если вы разрабатываете веб-приложение, где вывод будет смешан с html страницы вывода).
Такие функции, как mysql_connect, возвращают идентификатор ресурса или FALSE при ошибках. Используйте @mysql_connect (...) и проверьте возвращаемое значение.
Добавление к функции символа a останавливает запуск обработчика ошибок PHP в случае возникновения ошибки. Имейте в виду, что вы должны сами выполнять всю обработку ошибок, если решите ее использовать.
$test = @file_get_contents('nonexistant.file');
if (!$test)
{
die('Failed');
}
Лучше выключить display_errors и использовать специальные обработчики ошибок (см. Исключение ошибки).
Он подавляет любые ошибки, которые в противном случае могли бы быть выведены.
Это рецепт для боли и лишений, поскольку неизбежно приводит к трудностям, когда все же возникает ошибка, вы обязаны часами искать причину. Если бы оператор @ не использовался, ошибка была бы обнаружена за секунды.
Нет веских причин для его использования, используйте настройки display_errors и error_log ini, чтобы предотвратить отображение ошибок на действующем сайте и позволить им отображаться на вашем сайте разработчика.
Если есть ошибка, которую вы не хотите видеть, вам лучше просто исправить ее, чем подавлять!
Если это что-то во внешней библиотеке и вне вашего контроля, просто запишите это в журналы, отключите display_errors в производственной среде и живите с этим. Потому что неизвестно, будет ли ошибка, которую вы подавляете сейчас и с которой готовы смириться, ВСЕГДА ошибкой, возникшей оттуда.
@ === ПЛОХО
Иногда это полезно, особенно если администратор не хочет, чтобы вы играли со средой php или значение не важно и носит в основном косметический характер. Однако помните; это обходной путь, а не панацея.
[...]
.$foutDate = @filemtime($keyring); /* Don't care, as we've already established file */
$f["date"] = $foutDate;
$f["fullDate"] = date("r", $foutDate);
[...]
Что ж, ленивый ... Допустим, он полезен для сценария типа «запусти один раз, выбрось». В любом случае это плохая практика.