@topuserman

Правильное ли использование принципов DDD, и чем заменить Repository?

В XML-файле хранятся пользователи, необходимо выводить в шаблон список всех пользователей, с возможностью просмотра детальной информации.

Для этого первым делом я создал сущность пользователя UserEntity, которое содержит в себе только private-свойства + геттеры, в конструктор передаю все данные пользователя.

Далее, создал коллекцию UserСollection, для работы с сущностями UserEntity.

Дальше, как я понимаю, нужно как-то получить список пользователей из источника (в моем случае это XML-файл), и добавить их в коллекцию:

Если бы данные у меня были в БД, то для этого насколько понимаю, можно было бы использовать Repository, который возвращался коллекцию пользователей.
Можно ли все-таки использовать Repository или что-то другое надо ?

Уточню: перед инициализацией UserEntity, мне необходимо немного форматировать данные из хранилища (xml) - где мне это нужно сделать ? Каком этапе ?

И последнее:
с какой сущностью должен работать контроллер ?
Обычно, от модели получаем данные и в шаблон отдаем.
Но что у меня будет являться моделью ?
  • Вопрос задан
  • 231 просмотр
Решения вопроса 2
@dimuska139
Backend developer
Вообще-то как раз Repository - это тот слой абстракции, который нужен, чтобы на уровне бизнес-логики (слой сервисов) абстрагироваться от способа хранения данных. То есть, очевидно, нужно использовать Repository.

Контроллер должен работать только с сервисным слоем. Моделью (Entity) является тот класс, на который вы маппите пользователей, прочитанных из XML-файла. То есть в репозитории надо сделать метод, читающий XML, формирующий коллекцию из Entity (юзеры) и возвращающий ее. На уровне выше (в сервисном слое) надо сделать метод, который как раз вызывает этот метод репозитория. Методы сервиса в свою очередь надо дергать из контроллера, либо из класса консольной команды, если код кроном вызывается. То есть из контроллера дергать репозиторий не принято. А сервисный слой нужен, чтобы в нем держать всю бизнес-логику.
Ответ написан
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
Ну пусть репозиторий работает с файлом, какая разница какое хранилище, пусть читает файлы и собирает сущности в коллекцию
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы