![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
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ć? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Nie. Po co? Symfony2 ma przecież ładny podział natywny na wszystko.
Kontrolery, Formularze, Serwisy, Encje w obrębie jednego bundla. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Z punktu widzenia samego DDD to powinno się odseparować wartwę logiki od całej aplikacji,. Czy mój sposób tego nie robi?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 24 Dołączył: 12.05.2013 Skąd: Hamburg Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
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..
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() 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. -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 22:43 |