![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Mam pytanie odnośnie podejścia do persist abstract layer. Chce stworzyć własną warstwę perystencji oparta o symfony. Moje zalozenie jest takie, że jeżeli Klient zechce zmienić doctrine ORM na coś innego to nie chce aby aplikacja sie rozwalila. Chce zrobić to tak ze utworze abstrakcyjna klase do której wstrzykne doctrine i utworze kilka metod np. find ($ id) w tej metodzie bede korzystał z doctrine i repozytorium. System będzie uzalezniony od moich metod a nie Doctrine.. czy ten kierunek jest odpowiedni coś powinienem zmienic?
Bede wdzięczny za pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 24 Dołączył: 12.05.2013 Skąd: Hamburg Ostrzeżenie: (0%) ![]() ![]() |
Ja w tym nie widzę niczego nadzwyczajnego. To jest zupełnie normalne podejście do tematu. Model domeny nie ma prawa wiedzieć niczego o persistence.
To persistence zależy od modelu a nie model od persistence. Możesz warstwie persistence może użuć sobie Doctrine czy Propela albo dowolnego innego rozwiązania. Oczywistym jest, że zmiana, na przykład, Doctrine na Propel to nie zadanie na dzień czy dwa ale to nie ma prawa wþlywac na model domeny. Czyli takie rozdzielenie warstw ma jak najbardziej sens, ale wszystko zależy od wielkości projektu. Jak masz do napisania prostego bloga, gdzie logiki biznesowej prawie nie ma, to nie widzę większego sensu. Ale jak piszesz aplikację typu ecommerce czy klasy enterprise, to nawet nie wyobrażam sobie nie rozdzielenia tych warst. Model to nie baza danych i łączenie ich ma rację bytu tylko jesli model jest na prawdę prymitywny. W każdym innym przypadku model nie ma prawa wiedzieć niczego o persistence. Pierwszy przykład z brzegu: możesz na przykład zrobić własne klasy repository z interfejsami, które później wstrzykujesz do modelu, żeby zapewnić wymaganą funkcjonalność. Poczytaj o enterprise architecture. Metod na rozdzielenie tych warst jest całe multum. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 11:45 |