Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Intercepting Filter
bela
post
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 smile.gif

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 ?


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
aleksander
post
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?
Go to the top of the page
+Quote Post
bela
post
Post #3


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

Ostrzeżenie: (0%)
-----


  1. <?xml version="1.0" ?>
  2. <filters>
  3.    <pre>
  4.        <filter name="DupaFilter" mapping="pl.bela666.odin.filter.DupaFilter" />
  5.    </pre>
  6. </filters>


może tak ? biggrin.gif


--------------------
Go to the top of the page
+Quote Post
hawk
post
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ć winksmiley.jpg.
Go to the top of the page
+Quote Post
bela
post
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 winksmiley.jpg


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


--------------------
Go to the top of the page
+Quote Post
CyberBob
post
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 smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 23:57