Json разрешает, lock фиксирует
composer.json задаёт допустимые диапазоны и требования php/ext-*, composer.lock хранит конкретное разрешённое дерево приложения. В CI и production выполняют install по lock-файлу. update является отдельным изменением, которое проходит обзор, тесты и аудит.
Composer не устанавливает системное расширение. Виртуальные platform packages делают требования машиночитаемыми, а check-platform-reqs сравнивает lock с реальным production-интерпретатором.
Сборка объектов
PSR-4 требует точного регистра
Префикс пространства имён сопоставляется каталогу, а оставшаяся часть имени — пути файла. Регистр класса и файла совпадает: ошибка, незаметная на типичной Windows-среде, проявится на Linux.
Не пишите собственную цепочку include для класса, если Composer уже решает автозагрузку. Пользовательский ввод никогда не участвует в имени подключаемого файла.
Twig — представление, не домен
Шаблон получает WorkoutView с готовыми строками, ссылками и флагами доступности. Он может выполнить простое условие отображения, но не запрашивает repository, не вычисляет право и не изменяет сущность.
Twig 3 использует автоматическое HTML-экранирование при корректной настройке. Фильтр raw разрешён только для значения, которое построено доверенным HTML-компонентом по отдельному контракту; пользовательский текст через raw выводить нельзя.
Выбор зависимости
До установки пакета проверьте назначение, поддерживаемые версии PHP, лицензию, активность, историю security advisories и стоимость удаления. Маленькая библиотека способна принести большое транзитивное дерево.
В 2026 Composer audit остаётся обязательной проверкой, а политика security advisories может блокировать уязвимые версии при разрешении. Игнорирование advisory документируется с причиной и сроком, а не остаётся вечной настройкой.
Лабораторная работа
Настройте App\ как src/, соберите handler в одном composition root и передайте Twig только WorkoutView. Добавьте команды install, audit и check-platform-reqs в чек-лист сборки.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Перелинковка со справочником
Проверка актуальности
- getcomposer.orghttps://getcomposer.org/doc/01-basic-usage.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- getcomposer.orghttps://getcomposer.org/doc/articles/composer-platform-dependencies.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- getcomposer.orghttps://getcomposer.org/doc/03-cli.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php-fig.orghttps://www.php-fig.org/psr/psr-4/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- twig.symfony.comhttps://twig.symfony.com/doc/3.x/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .