Оглавление
Подавление ошибок с помощью оператора @Использование небезопасных SQL-запросовРазмещение бизнес-логики в контроллерахИгнорирование типизацииРучное управление зависимостямиОтказ от статического анализа кодаИспользование die() и exit() для обработки ошибокОткладывание или отсутствие тестовЗаключение
Прекратите использовать эти практики разработки на PHP в 2026 году
30.04.2026

В 2026 году разработка на PHP требует отказа от ряда устаревших и неэффективных подходов, которые продолжают встречаться даже в новых проектах. Современные версии языка (PHP 8.3+), а также инструменты экосистемы (Composer, PHPStan, Laravel) предоставляют надёжные средства для повышения качества, безопасности и сопровождаемости кода. В данном обзоре рассмотрены основные антипаттерны, их влияние на кодовую базу и рекомендуемые альтернативы.
Подавление ошибок с помощью оператора @
Использование оператора подавления ошибок (например,
@file_get_contents) приводит к сокрытию критических сбоев, что затрудняет диагностику и может привести к непредсказуемому поведению приложения. Вместо этого рекомендуется явно обрабатывать возможные ошибки и использовать современные HTTP-клиенты, такие как Guzzle, которые по умолчанию генерируют исключения при сбоях.Пример:
Использование небезопасных SQL-запросов
Внедрение пользовательских данных напрямую в SQL-запросы без использования подготовленных выражений создаёт уязвимости для SQL-инъекций. Для предотвращения подобных атак следует применять PDO с подготовленными выражениями или использовать ORM (например, Eloquent).
Пример:
Размещение бизнес-логики в контроллерах
Контроллеры должны выполнять только функции приёма запроса и возврата ответа. Вся бизнес-логика должна быть вынесена в отдельные сервисы, что повышает тестируемость и сопровождаемость кода.
Пример:
Игнорирование типизации
Отсутствие строгой типизации затрудняет сопровождение и увеличивает вероятность ошибок. В PHP 8.x доступны скалярные типы, объединения типов, перечисления и свойства только для чтения, что позволяет сделать код самодокументируемым и более надёжным.
Пример:
Ручное управление зависимостями
Использование ручного подключения библиотек (например, через
require_once) устарело. Современный стандарт - Composer, который обеспечивает автоматическое подключение, контроль версий и разрешение зависимостей.Пример:
Отказ от статического анализа кода
Статический анализ с помощью инструментов PHPStan или Psalm позволяет выявлять ошибки на этапе разработки, предотвращая их попадание в продакшн.
Пример:
Использование die() и exit() для обработки ошибок
Операторы
die() и exit() прерывают выполнение скрипта без логирования и обработки, что недопустимо в современных приложениях. Следует использовать исключения.Пример:
Откладывание или отсутствие тестов
Тестирование должно быть неотъемлемой частью разработки. Автоматизированные тесты позволяют безопасно рефакторить код и предотвращают регрессии. Написание теста новой фичи занимает 5 минут, но спасает от часов дебага.
Пример:
Заключение
Отказ от устаревших практик и внедрение современных подходов - залог создания надёжных, безопасных и легко поддерживаемых PHP-приложений. Рекомендуется последовательно внедрять перечисленные рекомендации в существующие проекты для повышения их качества.

