почему @ перед функциями - PullRequest
3 голосов
/ 11 июля 2009

Что делает добавление @ перед функцией? Я видел это в некоторых сценариях

пример:

$connect = @mysql_connect('localhost', 'root', 'password');
 instead of
$connect = mysql_connect('localhost', 'root', 'password');

Ответы [ 2 ]

12 голосов
/ 11 июля 2009

Подавляет любые ошибки, которые могут произойти внутри функции. Документация здесь .

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

0 голосов
/ 08 августа 2013

это Оператор контроля ошибок , из документации php:

PHP поддерживает один оператор контроля ошибок: знак at (@). При добавлении к выражению в PHP любые сообщения об ошибках, которые могут быть сгенерированы этим выражением, будут игнорироваться .

Если вы установили пользовательскую функцию обработчика ошибок с помощью set_error_handler(), то она все равно будет вызываться, но этот пользовательский обработчик ошибок может (и должен) вызвать error_reporting(), который вернет 0, когда вызову, вызвавшему ошибку, предшествовал @.

Если функция track_errors включена, любое сообщение об ошибке, сгенерированное выражением, будет сохранено в переменной $php_errormsg. Эта переменная будет перезаписываться при каждой ошибке, поэтому заранее проверьте, хотите ли вы ее использовать.

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