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