Вертикальный срез вместо каталогов-заглушек
Начните с одного завершённого сценария: маршрут, проверка входа, use case, repository, шаблон или JSON и тест. Только после этого обобщайте повторяющиеся элементы. Десятки пустых директорий Domain, Services и Helpers не создают архитектуру.
Каждый слой должен иметь причину изменения. HTTP меняется из-за протокола, use case — из-за предметного процесса, repository adapter — из-за способа хранения.
Направление зависимостей
Composer как часть архитектуры
require содержит runtime-зависимости, require-dev — инструменты анализа и тестов. composer.lock фиксируется для приложения. Скрипты Composer не должны выполнять недоверенный код без обзора, а install в production запускается с подходящими флагами и проверенным lock-файлом.
Platform requirements фиксируют PHP и ext-*. Команда check-platform-reqs полезна после установки на целевом хостинге.
PSR-4 и имена
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}Контейнер и явные зависимости
Небольшой проект способен собрать объекты обычным PHP-кодом. DI-контейнер полезен при большом графе, но его конфигурация остаётся composition root. Класс не запрашивает container->get() внутри метода: иначе зависимость снова становится скрытой.
Статические фасады и глобальные helpers кажутся короткими, но усложняют изоляцию теста и замену часов, хранилища или отправителя.
Когда нужен фреймворк
Фреймворк экономит время на маршрутизации, middleware, шаблонах и интеграции библиотек. Он не определяет предметные границы за вас. Выбирайте его по требованиям команды, сроку поддержки, экосистеме и способности обновляться, а не по размеру демонстрационного приложения.
Сохраните предметный сценарий тестируемым без запуска полного HTTP-ядра. Тогда смена adapter или версия фреймворка не превращается в переписывание правил.
Практика главы
Соберите вертикальный срез создания задачи. Покажите файлы route, controller, command, handler, repository interface, PDO adapter и тест. Объясните направление каждого import.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Перелинковка со справочником
Проверка актуальности
- getcomposer.orghttps://getcomposer.org/doc/01-basic-usage.mdПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php-fig.orghttps://www.php-fig.org/psr/psr-4/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .