@readfile в php? - PullRequest
       49

@readfile в php?

8 голосов
/ 16 апреля 2010

Ненавижу, что гугл не может искать символы. Я увидел это в некотором примере кода и удивился, почему перед функцией readfile стоит знак @:

@readfile($filename);

Чем это отличается от символа @?

Ответы [ 5 ]

17 голосов
/ 16 апреля 2010

@ перед командой в PHP означает, что ошибки не выводятся. Это называется оператор контроля ошибок .

Если вы удалили @ и readfile, возникнет ошибка (например, невозможность прочитать файл), тогда - в зависимости от ваших настроек PHP - сообщение об ошибке будет отображаться среди содержимого вашего сайта; то, что вы редко, если вообще хотите (Даже хуже, если это произойдет до вызова header() или start_session(), потому что после отправки содержимого заголовки больше не могут быть записаны.)

7 голосов
/ 17 апреля 2010

Я называю @ "оператором stfu".

6 голосов
/ 16 апреля 2010

Это оператор подавления ошибок PHP. С его помощью вы можете подавлять сообщения об ошибках.

Подсказка:

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

Future:

Поскольку оператор @ очень медленный, он не будет работать на ini_set например, @ini_set в будущей версии PHP, например PHP6

Важное чтение:

Неправильное использование оператора @

5 голосов
/ 16 апреля 2010

Это оператор контроля ошибок . Мануал тебе все расскажет ...

3 голосов
/ 16 апреля 2010

@ означает «не показывать ошибки / предупреждения»

...