Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony2][Symfony]Architektura serwisu
Forum PHP.pl > Forum > PHP > Frameworki
Matrix12
Witam,


tworze projekt w Symfony i mam pytanie odnośnie architektury danego serwisu.

Chcę to zrobić w następujący sposób :

-Front ->
-NewsBundle(tutaj trzymam widoki, kontrolery które będą pytały serwisy o np. newsy)
-Core ->
->NewsBundle ->(tutaj trzymam crudy które operują na serwisach, zapisują,updatetują, usuwają)
-CoreDomain ->
->NewsBundle(tutaj trzymam serwisy,eventy,biblioteki, repozytoria i encje)


Czy to jest dobre podejście do tworzenia architektury czy nie? Coś w tym zmienić?
Damonsson
Nie. Po co? Symfony2 ma przecież ładny podział natywny na wszystko.

Kontrolery, Formularze, Serwisy, Encje w obrębie jednego bundla.
Matrix12
Wydaje mi się, że po mojemu odseparowałbym logikę od frameworka.


P.S W symfony w encji można wybrać typ dla kolumny - obiekt. W takim przypadku zapisuje tam nazwę obiektu czy te pole w bazie wgl się nie pojawi?
Damonsson
Masz racje, tylko Ci się wydaje.

Jeżeli masz na myśli encję w Doctrine to tak jest taki typ jak object, jest to normalne pole TEXT w bazie MySQL, gdzie obiekt masz serializowany włącznie z nazwą oczywiście.
Matrix12
Z punktu widzenia samego DDD to powinno się odseparować wartwę logiki od całej aplikacji,. Czy mój sposób tego nie robi?
Xelah
Pozwolę sobie na jedną drobną uwagę. Rozkład katalogów i klas nie ma kompletnie niczego wspólnego z separation of concerns. Logika biznesowa nie ma prawa mieć nic wspólnego z frameworkeim. To, że w 99 przypadkach na 100 ma nie wynika ze struktury katalogów tylko z podejścia programisty do problemu.

Powiem tak: Nie kombinuj ze strukturą katalogów, bo to jest dosłownie najmniej istotny element całej układanki. Logikę biznesową odseparowuje się od frameworka na różne sposoby, a żaden z nich nie dotyczy się tego gdzie będziesz miał swoje klasy.
Matrix12
Ale z drugiej strony, mamy wszystkie serwisy i encje osobno to raz, dwa można tam trzymać interfejsy dostępne dla wszystkich a nie w kazdym bundlu osobny interface skoro np. wszystkie sewisy będa go wykorzystywały..
Forti
Utrudniasz sobie zycie na siłe.

Zrób tak:


Matric\ServiceBundle:
- wszelkie serwisy które NIE MAJA NIC wspólnego z symfony. Jako parametry in/out nie mogą przyjmować nic z symfony. W 100% przenośne i nie zależne.

Matrix12\CoreBundle:
- encje
- formularze (symfonowe)
- wszelkie komendy etc
- config/service.yml gdzie np. definiujesz serwisy z ServiceBundle (to jest szybszy dostęp do nich w controller wink.gif

Matrix12\WebBundle:
- widoki dla uzytkowników
- kontrollery dla użytkowników

Matrix12\AdminBundle:
- widoki dla panelu administracyjnego
- kontrollery dla panelu administracyjnego


Taki podział jest ładny. Chociaż ja i tak CoreBundle i ServiceBundle łącze w jeden.. i po prostu dla ServiceBundle mam odzielny folder Services.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.