Model domeny PHP

Programuję w PHP od kilku lat i w przeszłości stosowałem własne metody do obsługi danych w moich aplikacjach.

Zbudowałem swój własny MVC w przeszłości i mam rozsądne zrozumienie OOP w php, ale wiem, że moja implementacja wymaga poważnej pracy.

W przeszłości stosowałem relację is-a między modelem a tabelą bazy danych. Teraz wiem, że po przeprowadzeniu pewnych badań nie jest to najlepszy sposób. O ile mi wiadomo, powinienem tworzyć modele, które nie dbają o bazową bazę danych (lub jakikolwiek mechanizm przechowywania danych), ale troszczą się tylko o ich działania i dane.

Z tego, co ustaliłem, mogę tworzyć modele, powiedzmy, na przykład, Osoba, której ten obiekt może mieć dzieci (ludzkie dzieci), które są również obiektami Osoby przechowywanymi w tablicy (za pomocą metod addPerson i removePerson, akceptujących obiekt Person) .

Mogłem wtedy utworzyć PersonMapper, którego mógłbym użyć, aby uzyskać Osobę o określonym „identyfikatorze” lub uratować Osobę.

Może to następnie wyszukać dane relacji w tabeli odnośników i utworzyć powiązane obiekty podrzędne dla Osoby, która została zażądana (jeśli istnieją), a także zapisać dane w tabeli odnośników w komendzie składowania.

To teraz przesuwa granice mojej wiedzy .....

Co jeśli chciałbym modelować budynek z różnymi poziomami i różnymi pokojami w obrębie tych poziomów? Co jeśli chciałbym umieścić niektóre przedmioty w tych pokojach?

Czy stworzyłbym klasę dla budynku, poziomu, pokoju i przedmiotu

o następującej strukturze.

budynek może mieć 1 lub wiele obiektów poziomu znajdujących się na poziomie tablicy może mieć 1 lub wiele obiektów pokojowych przechowywanych w pomieszczeniu tablicowym może mieć 1 lub wiele obiektów przedmiotów przechowywanych w tablicy

i mapperzy dla każdej klasy z mapperami wyższego poziomu używającymi maperów potomnych do wypełnienia tablic (na żądanie obiektu najwyższego poziomu lub leniwego obciążenia na żądanie)

To wydaje się ściśle łączyć różne obiekty, chociaż w jednym kierunku (tj. Podłoga nie musi znajdować się w budynku, ale budynek może mieć poziomy)

Czy to właściwy sposób na robienie rzeczy?

W widoku chcę pokazać budynek z opcją wyboru poziomu, a następnie pokazać poziom z opcją wyboru pokoju itp., Ale mogę również pokazać strukturę przedmiotów przypominających drzewo w budynku i co poziom i pokój, w którym się znajdują.

Mam nadzieję, że to ma sens. Po prostu zmagam się z koncepcją zagnieżdżania obiektów w sobie, gdy wydaje się, że ogólne pojęcie oop polega na oddzielaniu rzeczy.

Gdyby ktoś mógł pomóc, byłoby naprawdę przydatne.

questionAnswers(3)

yourAnswerToTheQuestion