Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Symfony2] Entity - metody pomocnicze
Damiankossek
post
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:

  1. // pobieram instancję modelu customer
  2. $customer = Mage::getModel('customer/customer');
  3. // ładuje użytkownika o ID 1
  4. $customer->load(1);
  5. // w tym momencie wysyłany jest email do użytkownika
  6. $customer->sendNewAccountEmail('registered');
  7. // w tym momencie zmieniam imie uzytkownika (bez zapisu do bazy)
  8. $customer->setFirstame('Jan');
  9. // w tym momencie zapisuje dane do bazy
  10. $customer->save();


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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.12.2025 - 21:58