Итоговый продукт
Соберите менеджер задач с регистрацией, проектами, ролями, созданием и завершением задач, историей изменений и фильтрами. Серверный HTML обеспечивает основной маршрут, JavaScript улучшает фильтры и команды через JSON API. MySQL хранит предметные факты, а не состояние открытой вкладки.
Не начинайте все функции одновременно. Выпускайте вертикальные срезы: вход; создание проекта; одна задача; список; завершение; история. Каждый срез проходит безопасность и тесты.
Поток релиза
CI как доказательство
Pipeline устанавливает зависимости по lock-файлам, проверяет platform requirements, запускает style, static analysis, unit, integration и browser smoke, затем собирает immutable artifact. Никакие production-секреты не нужны шагу тестирования.
Версия артефакта доступна health endpoint и журналу. Это связывает ошибку с конкретным кодом, а не с приблизительным временем загрузки файлов.
Миграция без ловушки
Сначала разворачивайте схему, совместимую со старым и новым кодом: новая nullable-колонка или таблица, backfill отдельным контролируемым шагом, переключение чтения, затем усиление ограничения. Разрушительное удаление переносится в следующий релиз.
Backup ценен только вместе с проверенным восстановлением и известным временем. Для rollback кода оцените, сможет ли старая версия читать уже изменённые данные.
Проверка после публикации
Smoke проверяет главную, вход, чтение и одну безопасную команду. Health разделяет liveness и readiness: процесс может быть жив, но не готов принимать трафик без базы. Мониторинг сравнивает ошибки и latency с baseline до релиза.
Canary или небольшой процент трафика уменьшает радиус ошибки. Автоматический rollback требует надёжного сигнала, иначе краткий внешний сбой создаст дополнительную нестабильность.
Чек-лист 2026
- Целевая ветка PHP поддерживается; migration guide прочитан, deprecations проверены.
- MySQL 8.4 LTS и выбранная кодировка зафиксированы; миграции проверены с нуля и на копии объёма.
- Composer lock и platform requirements совпадают с сервером.
- ES-модули и Fetch имеют обычный HTML fallback для критических действий.
- Сессия, CSRF, XSS, SQL, загрузки и объектная авторизация покрыты отрицательными тестами.
- Есть build id, журнал без секретов, метрики и процедура отката.
Финальная практика
Опубликуйте проект в тестовом окружении и проведите учение: оборвите миграцию, верните 500 из repository, повторите POST после потери ответа и восстановите базу из копии. Запишите фактические команды и время восстановления.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Перелинковка со справочником
Проверка актуальности
- php.nethttps://www.php.net/supported-versions.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php.nethttps://www.php.net/manual/en/migration85.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- dev.mysql.comhttps://dev.mysql.com/doc/refman/8.4/en/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- getcomposer.orghttps://getcomposer.org/doc/01-basic-usage.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .