Псевдоним PHP @ функция

Я новичок в PHP, и меня смущает то, что некоторые примеры вызывают функцию с префиксом @, например @mysql_ping ().

Для чего это? Поиск в Google не очень помогает, так как @ отбрасывается, а «alias» - недостаточно хорошее ключевое слово.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
5
0
3 118
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Поиск в Google по запросу "php at symbol" предполагает, что он просит PHP не отображать никаких сообщений об ошибках, вызываемых вызовом.

Ответ принят как подходящий

@ подавляет ошибки, предупреждения и уведомления.

Вы можете использовать его с хорошими целями, если дополните его настраиваемым обработчик ошибок или должной проверкой переменной $ php_errormsg, чтобы вы могли правильно обрабатывать ошибки.

По моему опыту, такое правильное использование не очень часто встречается, а вместо этого часто используется плохим способом, просто для того, чтобы скрыть ошибки, не действуя на них.

Больше информации на http://www.php.net/manual/en/language.operators.errorcontrol.php

Что ж, ленивый ... Допустим, он полезен для сценария типа «запусти один раз, выбрось». В любом случае это плохая практика.

e-satis 26.09.2008 15:52

Ужасно полезно подавлять уведомления об ошибках, если в противном случае у вас есть обработчик ошибок.

eyelidlessness 20.07.2009 03:17

«Обычно его используют ленивые программисты, которые не хотят проверять коды ошибок» - Совершенно неверно. @ точно так же, как PHP "пытается / поймать" php.net/manual/en/language.operators.errorcontrol.php

Havenard 02.09.2009 11:10

Тем не менее, очень, очень далеко от реальной попытки / улова. Стандартный отказ от ответственности «если вы знаете, что делаете и у вас есть обработчики ошибок, то ничего страшного». вздох

Vinko Vrsalovic 02.09.2009 14:03

@Havenard это не то, как php пытается поймать. Php использует ... подождите ... попробуйте / поймайте (php.net/manual/en/language.exceptions.php). Подавление @ error - это всего лишь подавление ошибок. Он может быть полезен в некоторых случаях, но его следует использовать с осторожностью.

Josiah 27.04.2010 03:32

Подавить сообщения об ошибках: 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);

[...]

Другие вопросы по теме