Я написал систему, следуя гексагональной архитектуре.
У меня есть асинхронные команды и синхронизировать объекты запроса, разделенные в UseCase.
Моя папка src выглядит так:
-src
--Entity
---Task.php
--UseCase
---Command
----CreateTask
-----CreateTaskUseCase.php
-----CreateTaskCommand.php
Мой вопрос: что я могу / должен использовать для отправки данных с помощью команды в конструкторе UseCase\Command\CreateTask\CreateTaskCommand
\Entity\Task
UseCase\Command\CreateTask\Request\Task
что бы все необходимые данныеЭто тривиальный пример, чтобы показать проблему.
Прямо сейчас я использую объект из домена (Entiti\Task
так далее)
В реальной ситуации у меня есть UseCase\Command\CreateProcess
что нужно
Следуя DDD, Process является моей совокупностью. Все сущности существуют только благодаря конструкции Process (Node, Leaf, Resource, Person). Тогда я не хочу отдельным способом создавать другие объекты, потому что таким образом работает моя бизнес-логика.
В связи с этой проблемой возникает вопрос: что мне выбрать? Нарушение некоторых правил?
Проблемы:
Request\*
Сделайте мне много классов, но понятный способ использования команд и многое другое — unitTest и т. д.Спасибо за помощь.
Через некоторое время и опыт — лучший вариант — использовать стандартные данные из PHP. В конце концов, полезно создавать объекты для этой команды (второй вариант), но это потребует времени для создания классов и тестов.
Никогда не используйте что-то из домена — это огромный недостаток в будущем.
Других решений пока нет …