Модель домена PHP

Я программировал на PHP в течение нескольких лет и в прошлом использовал собственные методы для обработки данных в своих приложениях.

В прошлом я создавал свой собственный MVC, и у меня есть разумное понимание ООП в php, но я знаю, что моя реализация требует серьезной работы.

В прошлом я использовал отношение is-a между моделью и таблицей базы данных. Теперь, после некоторых исследований, я знаю, что это не самый лучший путь вперед. Насколько я понимаю, мне следует создавать модели, которые на самом деле не заботятся о базовой базе данных (или о том, какой механизм хранения будет использоваться), а заботятся только об их действиях и своих данных.

Исходя из этого, я установил, что я могу создавать модели, скажем, человека объект this person может иметь несколько дочерних объектов (дочерних объектов), которые также являются объектами Person, содержащимися в массиве (с помощью методов addPerson и removePerson, принимающих объект Person).

Затем я мог бы создать PersonMapper, который я мог бы использовать для получения Person с определенным «id» или для сохранения Person.

Это может затем найти данные взаимосвязи в таблице поиска и создать связанные дочерние объекты для человека, который был запрошен (если есть), и аналогичным образом сохранить данные в таблице поиска по команде сохранения.

Это сейчас раздвигает границы моих знаний .....

Что если бы я хотел смоделировать здание с разными уровнями и разными комнатами на этих уровнях? Что если я захочу разместить некоторые вещи в этих комнатах?

Буду ли я создавать класс для здания, уровня, комнаты и предмета

со следующей структурой.

В здании может быть 1 или несколько объектов уровня, содержащихся в массиве. Уровень может содержать 1 или несколько комнатных объектов, содержащихся в массиве. Комната может содержать 1 или несколько объектов предметов в массиве

и сопоставители для каждого класса с сопоставителями более высокого уровня, использующими дочерние сопоставители для заполнения массивов (по запросу объекта верхнего уровня или отложенной загрузки по запросу)

Кажется, что это тесно связывает различные объекты, хотя и в одном направлении (т. Е. Пол не обязательно должен быть в здании, но у здания могут быть уровни)

Это правильный путь?

В представлении я хочу показать здание с возможностью выбора уровня, а затем показать уровень с возможностью выбора комнаты и т. Д., Но я также могу показать древовидную структуру элементов в здании и что уровень и комната, в которой они находятся.

Я надеюсь это имеет смысл. Я просто борюсь с концепцией вложения объектов друг в друга, когда общая концепция oop, кажется, состоит в разделении вещей.

Если кто-то может помочь, это было бы очень полезно.

Ответы на вопрос(3)

Ваш ответ на вопрос