Функция псевдонима PHP

Я новичок в 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); 

[…]