Как правильно реализовать CRUD при работе с DDD и Yii2?
Как правильно реализовать CRUD? Везде в примерах есть только описание того, как сохранять данные, хочется увидеть пример обратного взаимодействия.
Реальная ситуация:
Хранилище данных - 1С SOAP, причем данные в кошмарной структуре и неудобной для текущего проекта форме, но с этим ничего сейчас не поделать. Для взаимодействия с 1С написана прослойка SoapService которая принимает на вход объект с параметрами запроса и возвращает объект с распарсенным ответом.
В контроллере мне удобней использовать модели (формы) Yii2, т.к. не хочется терять возможности клиентской валидации и прочего, но если исходить из логики, то эти формы не более, чем DTO.
Собственно вопрос:
1. Нормально ли, что ответ из 1С будет отдавать мне не Entity в том виде, как она понимается в DDD, а DTO?
2. Зачем мне нужна Entity в целом, если я могу брать данные сразу из DTO (формы) и передавать их в слой работы хранилища?
1. В DDD подразумевается предметная разработка. Соотвественно CRUD тут не совсем правильно делать. Тут нужно работать с UseCase: создай товар, удали товар, оплатить товар, архивировать товар. Это уже больше чем CRUD.
2. Во фреймворке делайте своё ядро, которое принимает DTO. Запихиваете данные в DTO далее передаёте в сервис, обрабатываете данные и пихаете через Repository в базу. В принципе все просто. Можете посмотреть курс Елисеева Дмитрия по работе с интернет магазином. Если говорить о примерах, то вот, правда на симфони.
Mylistryx, yii обычно делается просто по MVC, но DDD там тоже можно делать. DDD можно делать хоть без Yii) Конечно, цель YII больше прототипы. Сделал и забыл. Однако никто не говорит что на нем нельзя делать крупные проекты. Все зависит от самого программиста)