Оператор управления ошибками Управление ошибками PHP поддерживает один оператор управления ошибками: знак @. В случае если он предшествует какому-либо выражению в PHP-коде, любые сообщения об ошибках, генерируемые этим выражением, будут подавлены. Если пользовательская функция обработчика ошибок установлена функцией set_error_handler, она всё равно будет вызываться, даже если диагностика была подавлена. До версии PHP 8.0.0 функция error_reporting, вызываемая внутри пользовательского обработчика ошибок, всегда возвращала 0, если ошибка была подавлена оператором @. Начиная с PHP 8.0.0 она возвращает значение этого (побитового) выражения: E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE. Любое сообщение об ошибке, сгенерированное выражением, доступно в элементе массива с ключом «message», возвращаемого функцией error_get_last. Результат этой функции будет меняться при каждой ошибке, поэтому его необходимо проверить заранее. Оператор @ работает только с выражениями. Есть простое правило: если что-то возвращает значение, значит, можно указать перед ним оператор @. Например, можно указать оператор @ перед именем переменной, произвольной функцией, вызовом выражения include и т. д. При этом нельзя указывать этот оператор перед определением функции или класса, условными конструкциями, например: if, &foreach; и т. д. До PHP 8.0.0 оператор @ мог подавлять критические ошибки, которые прерывали выполнение скрипта. Например, добавление оператора @ к вызову несуществующей функции, когда она недоступна или вызвана с опечаткой, приведёт к прерыванию выполнения скрипта без указания причины. &reftitle.seealso; error_reporting Обработка ошибок и функции логирования