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.