О курсе
В лекции рассматриваются современные архитектурные стили: SOA, MDA, EDA и CQRS. Автор предлагает двигаться от простого кода с сервисами и менеджерами к новым абстракциям — сообщению, обработчику, шине и контексту.
В качестве примера берётся система из двух модулей, где один модуль напрямую обращается к сервису другого, что создаёт неправильное направление зависимостей. Затем эта система последовательно рефакторится с использованием паттернов command, event и middleware.
Практическая часть выполняется на PHP 8.3 с применением инструментов PHPStan и Deptrac. В ходе изложения обсуждаются инверсия зависимостей, принципы открытости/закрытости и разделения интерфейсов, иммутабельность, тип callable, вложенные дженерики и трейсинг сообщений.
Что рассматривается в программе
- рассматриваются архитектурные стили SOA, MDA, EDA и CQRS
- разбирается проектирование абстракций: сообщение, обработчик, шина, контекст
- демонстрируется рефакторинг системы из двух модулей
- работа с паттернами command, event и middleware
- обсуждается инверсия зависимостей и принципы SOLID
- затрагиваются иммутабельность, тип callable и вложенные дженерики
- рассматривается трейсинг сообщений
- использование PHPStan и Deptrac на PHP 8.3
Кому может быть полезен курс
- PHP-разработчикам, интересующимся архитектурными подходами
- специалистам, которые хотят ознакомиться с паттернами command, event и middleware
- тем, кто работает с PHPStan и Deptrac и хочет увидеть их применение на примере
- разработчикам, изучающим принципы SOLID и инверсию зависимостей
Вопросы о программе
Какие архитектурные стили рассматриваются в лекции?
В лекции упоминаются SOA, MDA, EDA и CQRS как современные архитектурные стили, навстречу которым предлагается двигаться от простого кода с сервисами и менеджерами.
На каком языке и с какими инструментами ведётся практическая часть?
Практическая часть выполняется на PHP 8.3 с использованием PHPStan и Deptrac.
Какие паттерны применяются при рефакторинге?
В ходе рефакторинга системы из двух модулей применяются паттерны command, event и middleware.
Какие дополнительные темы обсуждаются по ходу лекции?
Обсуждаются инверсия зависимостей, принципы открытости/закрытости и разделения интерфейсов, иммутабельность, тип callable, вложенные дженерики и трейсинг сообщений.