![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Hejka, zalozmy ze mam 20 roznych Entity. Dla kazdej Entity chce stworzyc Voter by zarzadzac co kto moze kasowac/edytowac/itp.
Tak wiec tworze 20 voters, rejestruje je jako service.Wszystko dziala wysmienicie ale jest jedno ale. Symfony tworzy wszystkie 20 obiektow voters dla kazdego request, nie wazne czy ja zamierzam z nich korzystac czy nie. Poczytalem troche, ok, rozumiem czemu. Nie mniej jednak nie podoba mi sie, iz za kazdym razem tworzy mi te 20 obiektow nawet jak nie potrzebuje ani jednego z nich. Oczywiscie moge latwo ograniczyc, by one nic nie sprawdzaly jak nie ma potrzeby wiec nie beda mi obciazac aplikacji zbednymi wyliczeniami ale sam fakt, ze sa one tworzone bez sensu mnie irytuje. No i pytanie: czy powinieniem sie poprostu nie irytowac i olac to i zostawic jak jest czy moze powininiem cos zrobic? Przykladowo mysle nad takim rozwiazaniem, ze tworze i rejestruje tylko jeden uniwersalny voter dla wszystkich Entity i w przypadku gdy bedzie żądanie sprawdzenia praw dla jakiejs Entity to dopiero wtedy bede ladowal wlasciwy voter dla tej entity jako zwykly niezarejestrowany obiekt. Jak wy to robicie u siebie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat ale votery (zakładam, że mówimy o klasach a nie obiektach) dla każdej encji budzą takie podejrzenia przyklady z dokumentacji Symfony wskazuja dosc jasno, ze dla kazdej Entity ma byc oddzielny Voter, co raczej jest dosc logiczne.Nie zmienia to jednak faktu, że mozna napisac jeden bazowy voter, z ktorego inne w razie potrzeby beda korzystac. Ja ostatecznie zrobilem jak pisalem na poczatku: mam jeden voter na wszystkie Entity, ktore to voter realizuje ogolne sprawdzanie praw, ktore dla wielu Entity bedzie takie samo. Ten jeden voter rejestruje w services jako wlasnie voter by symfony go ladowalo. Do tego, jesli jakas Entity bedzie wymagac wlasnych oddzielnych praw, tworze Voter specjalnie dla niej, ale nie rejestruje juz go w services jako entity. Ten jeden glowny Voter sprawdza, czy istnieje voter dla danej entity. Jak nie, to robi swoje ogolne rzeczy, jak tak, to laduje ten specjalny voter dla danej Entity i przekazuje sprawdzanie temu specjalnemu Voter. Dzieki temu mam uniwersalnosc ale i w razie potrzeby specyficznosc i mam DRY - tak wiec spij spokojnie (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 17:52 |