О курсе

В лекции рассматриваются современные архитектурные стили: 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, вложенные дженерики и трейсинг сообщений.