@topuserman

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

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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 22:30
200000 руб./за проект
24 апр. 2024, в 22:11
2000 руб./за проект
24 апр. 2024, в 21:49
10000 руб./за проект