Самоучитель: PHP 8.5: инженерный практикум
Глава 22 из 22VI. Качество и выпуск140 минут

Глава 22. Выбор фреймворка и управляемый релиз проекта

Фреймворк ускоряет повторяющуюся инфраструктуру, но проект остаётся ответственным за предметные границы, данные, угрозы, тесты и откат.

После главы вы сможете
  • выбрать линию фреймворка
  • собрать неизменяемый артефакт
  • провести репетицию отката

Решение 2026 года

На август 2026 Symfony 8.1 является текущей стабильной линией и требует PHP 8.4+, Symfony 7.4 — актуальная LTS с поддержкой security fixes до ноября 2029. Выбор зависит от горизонта поддержки и темпа обновлений, а не от максимального номера.

Twig 3 остаётся текущей документированной линией шаблонизатора. Doctrine ORM 3.6 отмечена стабильной, 4.0 — upcoming. Точные patch-версии фиксируются lock-файлом и проверяются перед каждым релизом.

Путь артефакта

Управляемый выпускОдин проверенный артефакт перемещается между окружениями без composer update на production.CommitreviewCItests/auditArtifactimmutableMigratecompatibleDeployhealthObserverollback
Один проверенный артефакт перемещается между окружениями без composer update на production.

Когда нужен фреймворк

Routing, DI container, validation, security, console и HTTP abstraction перестают быть учебными задачами, когда продукт растёт. Фреймворк снижает стоимость типовой инфраструктуры и задаёт интеграционные соглашения.

Не переносите предметные правила в контроллеры и annotations только потому, что так короче. Handler, value objects и policies сохраняют независимый язык, а framework adapters переводят request, response и persistence.

Артефакт и миграция

CI выполняет install по lock, check-platform-reqs, audit, static analysis и тесты, затем создаёт версионированный неизменяемый пакет. Production не разрешает зависимости заново и не получает dev-пакеты.

Схема сначала расширяется совместимо, затем новый код переключает чтение и запись, потом старое поле удаляется отдельным релизом. Backup считается готовым только после проверки восстановления и измерения времени.

Health, canary и rollback

Liveness сообщает, что процесс жив, readiness — что он готов обслуживать запросы с обязательными зависимостями. Endpoint не раскрывает DSN, версии модулей и секреты наружу.

Canary ограничивает радиус ошибки, а мониторинг сравнивает status, latency и error rate с baseline. Rollback кода проверяет совместимость с уже применённой миграцией; иногда безопаснее исправляющий forward-релиз.

Итоговый проект

Завершите дневник тренировок: аккаунт, черновик, подходы, публикация с version, CSV-импорт, недельная проекция, timezone, история и ограниченный доступ тренера. Серверный HTML остаётся базовым маршрутом, дополнительные улучшения не ломают работу без JavaScript.

Локальный прогресс

Закрепите материал

Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.

Перелинковка со справочником

Проверка актуальности

  • symfony.comhttps://symfony.com/releasesПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • twig.symfony.comhttps://twig.symfony.com/doc/3.x/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • doctrine-project.orghttps://www.doctrine-project.org/projects/ormПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • getcomposer.orghttps://getcomposer.org/doc/03-cli.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • php.nethttps://www.php.net/supported-versions.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.

Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .

Данные этого сервиса

Настройки cookie и локальных данных

Аналитика

Текущий статус: не выбран. До согласия обе аналитические системы не загружаются.

Локальные данные

Удаление затрагивает только ключи PHP-сервиса в этом браузере и требует подтверждения.

Политики

Политика конфиденциальности · Политика использования файлов cookie