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