символ @ перед вызовом функции - PullRequest
122 голосов
/ 05 января 2010

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

init_get($somevariable);

@init_get($somevariable);

Ответы [ 5 ]

190 голосов
/ 05 января 2010

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

47 голосов
/ 05 января 2010

Это заставляет замолчать ошибки и предупреждения.См. Операторы контроля ошибок .

34 голосов
/ 05 января 2010

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

Что делает php:

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

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

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

8 голосов
/ 05 января 2010

http://www.faqts.com/knowledge_base/view.phtml/aid/18068/fid/38

Все выражения PHP можно вызывать с префиксом "@", который отключается сообщение об ошибке для этого конкретного выражения.

6 голосов
/ 05 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...