символ @ перед вызовом функции

135

В чем разница между этими двумя вызовами функций в PHP?

init_get($somevariable);

@init_get($somevariable);
русалка
источник
«@» закроет все ошибки и уведомления php
Эркан Озкок 01

Ответы:

210

"@" заглушит любые ошибки php, которые может вызвать ваша функция.

solidgumby
источник
Но что, если вы поставите @перед trigger_errorфункцией PHP ? Я видел это в некотором коде, но его поведение пока для меня непоследовательно. В некоторых случаях я действительно вижу, что настроенный обработчик ошибок сообщает об ошибке, а в других случаях, кажется, сообщается.
fritzmg 06
2
@Будет временно установлен error_reportingв 0 , но не будет «подавлять» ошибка.
solidgumby 08
36

Как уже было сказано @, ошибка (если таковая имеется) не появится.
С точки зрения производительности это не рекомендуется.

Что делает php:

  • чтение состояния отображения ошибки
  • настройка отображения ошибок на отсутствие ошибок
  • запуск вашей функции
  • установка отображения ошибок в предыдущее состояние

Если вы не хотите, чтобы появлялись ошибки, используйте error_reporting(0);.

Или просто напишите код без ошибок: P

AntonioCS
источник
Предпочитаю ставить ноль, но если это
сработает
1
А как насчет функций, которые вы не контролируете, например, почты? Какие еще варианты существуют? Я использую @ прямо сейчас, но было бы здорово, если бы можно было сделать по-другому
spuas
6

Как все говорили, он останавливает вывод ошибок для этой конкретной функции. Однако это сильно снижает производительность, поскольку необходимо дважды изменить настройку отображения ошибок. Я бы рекомендовал НЕ игнорировать предупреждения или ошибки и вместо этого исправлять код.

Даниэль Соричетти
источник
Спасибо всем за ваши ответы. Этот код не мой, я смотрел на phpBB только из любопытства, поэтому у меня нет проблем с производительностью. :) Еще раз спасибо.
nixie 05