![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 118 Pomógł: 8 Dołączył: 10.12.2009 Ostrzeżenie: (0%)
|
Witam, zacząłem 'studiować' framework Symfony 2 i mam pierwszę pytanie. Stworzyłem entity User - jak wszędzie czytam - entity powinno być zbiorem tylko setterów oraz getterów. Czy mogę w jednej instancji obiektu mieć settery, gettery oraz mieć własne metody pomocnicze typu "sendNewAccountEmail()" które mają dostęp do usług (services - mailer, itp.) bo entity niestety w standardzie chyba nie ma dostępu do usług?
W Magento jest to rozwiązane bardzo fajnie:
Mam poprostu instancje customer która ma wszystkie settery, gettery związane z bazą danych oraz metody pomocnicze które mogą korzystać z tych danych. Jak to rozwiązać w symfony aby było prawidłowo i przyjemnie? Chodzi też o elastyczność. Rozwiązanie powinno też pozwalać na to aby dodanie nowej kolumny wiązało się ze stworzeniem kolumny w bazie danych, dodanie settera oraz gettera do entity i w zasadzie to wszystko. Poprostu teraz znalazłem jedyne rozwiązanie w którym tworze model, wstrzykuje entity i wtedy mogę kombinować ale niestety dodanie w przyszłości nowych kolumn będzie wiązało się z dodawaniem już setterów,getterów zarówno w modelu oraz entity. Czy to prawidłowa droga? Wydaje mi się że to mało wygodne. Idealnym miejscem na to wszystko jest bezpośrednio Doctrine ENTITY ale wg. konwencji to tylko zbiór setterów i getterów a na dodatek bez dostępu do usług. Ten post edytował Damiankossek 9.12.2014, 09:10:31 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
To nie są metody "pomocniczne" tylko dosyć złożona warstwa logiki aplikacji, która zapewne sama w sobie ma sporo zależności - nie chcesz tego w prostym obiekcie typu Encja, który ma jedynie reprezentować jakąś względnie podstawową jednostkę danych.
Utwórz sobie odpowiednią usługę, która jako argument metody sendNewAccountEmail() przyjmie obiekt typu User i wyśle maila dla przekazanego użytkownika. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 118 Pomógł: 8 Dołączył: 10.12.2009 Ostrzeżenie: (0%)
|
Wiem czym są metody pomocnicze (helpery) a czym złożona warstwa logiki (zazwyczaj modele). W Magento mam w zasadzie wszystkie operacje związane z customerem w obrębie jednego obiektu (oczywiście nie liczę tego że wewnątrz customera pobierane są kolejne instancje innych obiektów). Czyli twoje rozwiązanie to tak naprawdę to o czym wcześniej mówiłem, muszę stworzyć usługę np. UserManager, wstrzyknąć w nią entity usera i dopiero tam pisać bardziej złożone rzeczy.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 20.12.2025 - 23:14 |