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


135

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

init_get($somevariable);

@init_get($somevariable);

«@» закроет все ошибки и уведомления php
Эркан Озкок 01

Ответы:


210

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


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

2
@Будет временно установлен error_reportingв 0 , но не будет «подавлять» ошибка.
solidgumby 08


36

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

Что делает php:

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

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

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


Предпочитаю ставить ноль, но если это
сработает

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


6

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


Спасибо всем за ваши ответы. Этот код не мой, я смотрел на phpBB только из любопытства, поэтому у меня нет проблем с производительностью. :) Еще раз спасибо.
nixie 05
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.