![]() |
![]() |
![]()
Post
#1
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Powiedzcie mi czy dobrze myśle o tym wzorcu
![]() Mamy sobie FilterManager, i do niego ładujemy filtry (::addFilter, config xml, nie ważne jak). Filtry mogą się wykonywać przed lub po wykonaniu akcji. Przykład filtra : StartOutputBufferingFilter, AuthorizationFilter, CacheFilter. I na przyklad CacheFilter stwierdza, że mamy swieży cache i czy może on zaprzestać wywoływania akcji ? Albo AuthorizationFilter, wywoła akcje loginForm ? -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
a jak odróżniać, który filtr jest pre a który post? Twżyć przed i po generowaniu strony dwie instancję kontrolera filtrów i wrzucać odpowiednie filtry? ew. w konfiguracji (np xml) zapisać które filtry wywoływać przed a które po?
|
|
|
![]()
Post
#3
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
może tak ? ![]() -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
A po co rozróżniać przed/po? Sugeruję dekoratory.
Edit: bela_666, ciekawy jestem tego pl.bela666.odin.filter.DupaFilter. Zamieniasz to na katalog (tzn. kropki na slashe i jakiś root dir)? Przepychasz przez autoloader? Robisz using() tak jak np. Prado i wstawiasz do include_path? W momencie, kiedy każdy mój plik ma po kilka require_once, zaczyna mnie to wkurzać ![]() |
|
|
![]()
Post
#5
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(hawk) Edit: bela_666, ciekawy jestem tego pl.bela666.odin.filter.DupaFilter. Zamieniasz to na katalog (tzn. kropki na slashe i jakiś root dir)? Przepychasz przez autoloader? Robisz using() tak jak np. Prado i wstawiasz do include_path? Tak, zamieniam kropki na slashe przez Odin::import(), jak nie ma pliku to rzucam wyjątek. Nazwy w konwencji Javy ![]() -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Mam pewne pytanie związane z tym wzorcem. Możliwe że w złe miejsce "wsadzam" obsługę tego typu rzeczy, ale poinformujcie mnie o tym :]
Przykładowa aplikacja, dodajemy kilka filtrów w tym filtr odpalający podaną przez użytkownika akcje. Wszystkie filtry w którymś tam momencie wywołują $this->NextFilter(); co powoduje przejście do kolejnego filtra. Jak przy takim schemacie umożliwić jednemu filtrowi wstrzymanie uruchomienia innego. Np. akcja sprawdza autoryzacje, ponieważ użytkownik jest niezalogowany zostaje uruchomiona akcja Login a nie podana przez użytkownika w parametrze akcja DeleteNews. Ale co ważne, cała reszta filtrów ("w dół") muszą być odpalane (np. filtr od Bemchmarka liczący czas musi być odpalony na samym końcu). -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: -- Ostrzeżenie: (0%) ![]() ![]() |
Według mnie akcji DeleteNews nie ma potrzeby wstrzymywać, a to dlatego że nigdy nie powinno dojsc do jej utworzenia, w moich schmaciku myślenia to tak, najpierw actionManager uruchamia sobie autentykacja w zależności od tego czy użytkownik jest zalogowany uruchamia w dalszej kolejnosci autoryzacje, bądz wspomnianą przez Ciebie actionLogin, czyli puentując ja potraktowałbym jako jedno, sprawe autentykacja/autoryzacji, która będzie zracać kolejną do wykonania akcje (login,deleteNews)
Jeżeli mijam sie z prawdą nie bic ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 23:57 |