У меня есть объект модели данных User
. В моем приложении также есть некоторые другие объекты модели данных, например, Fork
и Options
. У пользователей есть форки и ответвления. Мое приложение должно выполнять множество запросов с некоторой комбинацией информации о пользователе/форке/параметрах и т. д. Например, вы можете увидеть страницу пользовательских вилок. Для этого потребуется запрос, который присоединяется к этому пользователю (например, к пользователю, вошедшему в сеанс) в Forks.
Я не хочу нарушать Закон Деметры, и я также обычно против геттеров (и сеттеров) в целом, поэтому я не хочу реализовывать User::getID()
или User::getUsername()
.
Однако альтернатива мне не кажется намного лучше. В итоге я реализовал различные методы в User
для выполнения этих запросов (например, User::getForks()
). В целом это работает, но класс User
стал монолитным, что по-своему плохо.
Более того, я не уверен, как разрешить запрос двух объектов модели данных. Например, у меня может быть User
с идентификатором и Fork
с идентификатором, и я хочу проверить, что вилка принадлежит пользователю. Для этого требуется, чтобы либо Fork
раскрывал свой идентификатор пользователю, либо User
раскрывал свой идентификатор Fork
, либо оба раскрывали свои идентификаторы контроллеру (или чему-то еще). Ни один из них не кажется желательным, и я не уверен, что выбрать. Есть ли какая-то другая альтернатива, которую мне не хватает?
На другом аналогичном этапе я не уверен, как лучше всего добавить информацию в представление. У меня есть объект представления, и обычно я использую такой метод, как User::addForksToView(View $view)
, который запускает запрос или запросы и выполняет некоторую обработку, но это также увеличивает размер и ответственность User
. Я думаю, что это аналогичная проблема.