Применение DDD-методологии в PHP Александр Новиков
Единый язык Событие Действи е Дэшборд Виджет Источник данных
Изоляция предметной области Вынести вспомогательный код Очертить границу модели
Преимущества предметно-ориентированного проектирования реализация сложной бизнес-логики повышенная прикладная ценность приложения быстрое обнаружение несоответствий ТЗ ясные приоритеты при распределении ресурсов проекта
Смешение языков помешало построить Вавилонскую башню PHP JavaScript HTML SQL CSS
Объекты доступа к данным контроллеры база данных модель предметной области браузер
Входящий ассоциативный массив
Исходящий ассоциативный массив
Марка не может сама себя напечатать, продать, положить в альбом или порвать на части
Обязанности коллекции сущностей создать новую сущность и присвоить ей уникальный ID найти сущность по ID или другим свойствам извлечь из сущности состояние и сохранить его уничтожить ненужную сущность CRUD
Фабрика фабрик Слой, содержащий модель предметной области, выполнен в виде фабрики коллекций. Каждая коллекция является фабрикой объектов. Объекты представляют собой понятия предметной области.
Сущность
Особенности сущностей время жизни составляет несколько сессий качественно может не отличаться от других экземпляров имеет идентификатор
Объект-значение
Особенности объектов-значений срок жизни не выходит за рамки одной сессии не изменяет состояние может использоваться для передачи сообщений между объектами может входить в качестве атрибута в состав сложных объектов (агрегатов) допускает денормализацию в базе данных
Агрегат
Подключение частей к агрегату сущность коллекция фабрика
коллекция
Служба
Многоярусная архитектура
Управление Сервисы Модель Хранилище
Юнит-тестирование объекты-значения сущности коллекции агрегаты службы
Рефакторинг Перенос вычислений и сложной логики принятия решений в отдельные объекты-значения Объединение сходных сценариев внутри службы Переименование методов и свойств Перегруппировка сборных объектов
Благодарю за внимание