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


mam takie pytanie. Chce zrobić tak aby w encji stworzyć logikę biznesową, ale dodatkowo chce pozbyć się setterów... Czytałem, że nie powinno się ich używać. Ale mam problem bo chce stworzyć system który rejestruje nowego użytkownika. W encji stworzyłem metodę register która rejestruje użytkownika ale jak usunę settery to krzyczy mi że muszę dodać settery. Czy da się to jakoś ominąć?
Forti
Szczerze to głupio kombinujesz wink.gif

http://stackoverflow.com/questions/2307860...ers-dynamically

i ewentualnie metoda magiczna __call na wywołanie set i get (substr, explode, itp. - kombinuj)
Wg. mnie nie warto.
w konsoli robisz:

php app/console doctrine generate entities AcmeSomeBundle

i masz wszystko na tacy. Każde nowe IDE (chyba) ma funkcje generate setters / getters.
Crozin
Cytat
Chce zrobić tak aby w encji stworzyć logikę biznesową [...]
Nie powinna się ona w nich zawierać.
Cytat
[...] ale dodatkowo chce pozbyć się setterów... Czytałem, że nie powinno się ich używać.
Prawdopodobnie głupoty czytałeś, bądź jakiś przykład oparty na ich błędnym wykorzystaniu.

Cytat
i ewentualnie metoda magiczna __call na wywołanie set i get (substr, explode, itp. - kombinuj)
Nawet takich potworków nie proponuj. ;-)
Matrix12
Okej czyli rozumiem, że tak tworzę np. Register.php tam tworzę tam zawieram metodę która rejestruje użytkownika, ale jak zapisać takiego użytkownika w bazie? Wydaje mi się bezsensu stworzyć plik który rejestruje użytkownika a encja to zapisuje.




Próbowałem tak zrobić, że stworzę osobny plik Register, tam metodę która rejestruje użytkownika ale problem mam z zapisaniem tego użytkownika do bazy..
skowron-line
Encja ma odzwierciedlać baze danych, dodatkowo nasz klasy Repository w których dokładasz sobie "zapytania".
Logike biznesową przenieś do serwisów i klas pomocniczych. Biznes nie interesuje storage więc nie możesz tego mieszać.
Forti
Cytat(Matrix12 @ 24.04.2015, 00:16:51 ) *
Okej czyli rozumiem, że tak tworzę np. Register.php tam tworzę tam zawieram metodę która rejestruje użytkownika, ale jak zapisać takiego użytkownika w bazie? Wydaje mi się bezsensu stworzyć plik który rejestruje użytkownika a encja to zapisuje.




Próbowałem tak zrobić, że stworzę osobny plik Register, tam metodę która rejestruje użytkownika ale problem mam z zapisaniem tego użytkownika do bazy..


Do tego masz kontrolery. Kontroler pobiera dane z formularza - przekazuje do takiego register gdzie robisz odpowiednie rzeczy jak np. hash hasła itp., klasa ta zwraca dane i kontroler zapisuje do w bazie. Jeżeli oczywiście nie korzystać z fosUserBundle.
Można też zapisywać w tej klasie do bazy. Tworzysz serwis z repository i z tą klasą i wstrzykujesz DI.
Matrix12
Z dodatkowych rozszerzeń będę korzystał jak poznam SF2. Dobrze czyli rozumiem, że mimo wszystko robie serwis, encje wtedy będzie to dobre podejście do separacji logiki biznesowej ?
Forti
Korzystasz z Symfony po co? Aby się uczyć tak? To się ucz dobrze. Instaluj FOSUserBundle i zobacz jak powinno się robić system użytkowników.
Matrix12
Wszystko fajnie, wiem jak to wykonać.




Mam głupie pytania. Wyczytałem również na facebooku na phperach, że nie powinno używać się getterów i setterów. Chciałem ten efekt uzyskać ale jak usunąć settery i gettery z encji? Przecież jak się je usunie to automatycznie system krzyczy aby je dodać...
pyro
Cytat(Matrix12 @ 27.04.2015, 03:31:35 ) *
Wszystko fajnie, wiem jak to wykonać.




Mam głupie pytania. Wyczytałem również na facebooku na phperach, że nie powinno używać się getterów i setterów. Chciałem ten efekt uzyskać ale jak usunąć settery i gettery z encji? Przecież jak się je usunie to automatycznie system krzyczy aby je dodać...


Możesz zapodać link?
Forti
Podaj link. Aż nie wierze ż ktoś pisał takie brednie wink.gif
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.