![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 8.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
1. Jaka jest ich wlasciwie koncepcja? Staram sie dojsc z czase mdo tego, ze prefilt wykonuuje sie przed wykonaniem ackji w celu przygotowania odpowiednich danych poczatkowych lub warunkow jakie ma spelniac sygnal wejsciowy i after filtr, wlsnie po co? Ja rozumiem zwalniac pamiec w C itd... ale jezeli skrypt sie wykonuje i wszystkie dane, zmiennie i wartosci gina po zakonczeniu skryptu (oczywiscie bez sesji i cookie itd) to wlasnie nie rozumeim zastosowania tego zbytnio.
2. Drugie moje pytanie/problem. Czy warto nadawac priorytety? Doszedlem do wniosku, jako ze wywolanie niektorych filtrow zalezy bezposrednio od wartosci wykonania i stworzenia danych za posrednictwem innego filtra, to trzeba je w jakis sposob zsynchronizowac. Ale czy to jest dobre rozwiazanie, a moze ja sie po calosci myle? Moze Filtry maja byc niezalezne (ale wtedy nie moglbym osiagnac tego czego oczekuje) . Moglby ktos to skomentowac/wytlumaczyc (filtry "po" i zwiazki miedzy nimi) ? -------------------- TESTWIEDZY.PL - Przetestuj swoją wiedzę...
Nie ma rzeczy niemożliwych. Niemożliwe wymaga jedynie więcej czasu... Pracujemy na Ciebie! - MINDFLOW.PL |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
IMO :
- filtry powinny być niezależne od siebie, ale korzystać z context ( request, response, ja mam jeszcze configuration oraz currentUser ) - jeśli chodzi o kolejność wywoływania to u mnie jest to dość proste rozwiązanie, który pierwszy dodam ten pierwszy się wykonuje - można wiele rzeczy dodać do filtrów, np. benchmark, banowanie, start sesji ( czasem nie wystarczy samo session_start(), ale zależność od session_id()), osobiście posunołem się dalej i zrobiłem także zamyaknie połączeń z bazą danych oraz DispacherFilter ( przed wysłaniem do użytkownika headera zamykam połączenie z bazą danych ) -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Filtry służą do modyfikacji żądania, które nie zawsze może być spełnione. W zasadzie cały łańcuch wykonania powinien wyglądać w uproszczeniu tak:
żądanie użytkownika -> utworzenie kontekstu (dispatcher) -> pre-filtry -> łańcuch akcji -> post-filtry -> zwrócenie odpowiedzi na żądanie Filtrowanie przed łańcuchem akcji służy najczęściej przygotowaniu bibliotek oraz sprawdzaniu czy akcja może zostać wykonana w danym kontekście (uprawnienia użytkownika itp.). Po łańcuchu akcji możemy pozamykać wszystkie połączenia, a także zająć się obróbką danych wyjściowych. Osobiście traktuję w swoich projektach widok jako post-filtr. Nie powinieneś wiązać ze sobą filtrów. Priorytety - zależy jak je rozumiesz. Najprostszym rozwiązaniem jest kolejka. -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 8.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Myslac o priorytetach chodzi mi bardziej o okreslenie kolejnosci wykonania. Jezeli chodzi o zamykanie polaczenia z baza, to robie to odrazu po wykonaniu zapytania. Bo to jest chyba bardziej efektywne niz trzymanie otwartego polaczenia.
Cytat Nie powinieneś wiązać ze sobą filtrów. No tak, top nie bylo by problemow. Ale gdy mam filtr ladujacy configuracje aplikacji, kolejny, ustawia costam, a nastepny sprawdza dostep uzytkownika korzystajac przy tym z configuracji ktory zaladowal 1 filtr. I teraz problem pojawilby sie w momencie gdy w katalogu te pliki byly by inaczej ustawione (data modyfikacji itd) tak wiec zastosowanie priorytetu (kolejnosci wywolania byloby ok) tylko te slowa... zeby ich nei wiazac. To kiedy w takim razie powinienem zaladowac configi a kiedy uwierzytelnic i sprawdzic dostep uzytkownika, a kiedy inne pre.akcjeMoze nie dotarlem do takiego problemu zeby sie zaglebic w zastosowanie pre.filtorw. Ale jezeli baze zamykam po swojemu,a widok odpalam standardowo poprzez akcje, to nie widze dalej konkretnych zastosowan. Moglby sprobowac mi ktos przyblizyc jeszcze pare? Ten post edytował Pucy 20.06.2006, 11:22:02 -------------------- TESTWIEDZY.PL - Przetestuj swoją wiedzę...
Nie ma rzeczy niemożliwych. Niemożliwe wymaga jedynie więcej czasu... Pracujemy na Ciebie! - MINDFLOW.PL |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Wszystko musisz robić po kolei, dlatego zasugerowałem moje rozwiązanie - kolejkę. Wiązania ze sobą, rozumiałem raczej przez usunięcie zależności pomiędzy klasami filtrów. Co do działania, to jeden filtr może opierać się na efektach działania poprzedniego.
Nie wiem czy trzymanie otwartego połączenia ma jakiś większy wpływ na wydajność aplikacji. Nikt nie każe używać filtrów. Jak każdy wzorzec, został stworzony, aby zwiększyć elastyczność aplikacji. To jest dyskusja w stylu programowanie proceduralne vs. obiektowe. Wszystko można napisać proceduralnie, tylko czy później będzie Ci wygodniej nad tym pracować... Jeżeli umiesz to porządnie wykonać bez filtrów, to nie widzę przeszkód w pominięciu tego wzorca. -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 8.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dlatego moze wlsnie chcialem rozwinac troche ta dyskusje o programowaniu proc vs obkt. Bo moze ja nie widzie pewnych zastosowan, i dlatego chcialbym zebysmy sprobowali rozwinac ten problem, jezeli nie bylo to poruszane na forum juz w dosc obszerny sposob.
Ah, Ludvik to musielismy sie zle zrozumiec, bo mi nie chodzilo o zaleznosci typu ze jeden korzysta z drugiego czy cos, tylko wlasnie o wyniki dzialania jednego a kolejne korzystaja z tych wynikow, ale jak wlasnie piszesz potrzebna jest kolejka (u mnie priorytety). -------------------- TESTWIEDZY.PL - Przetestuj swoją wiedzę...
Nie ma rzeczy niemożliwych. Niemożliwe wymaga jedynie więcej czasu... Pracujemy na Ciebie! - MINDFLOW.PL |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Dyskusja była poruszana, ale nie rozwinęła się za bardzo.
Może powiesz, jak u Ciebie wygląda: - utworzenie połączenia z bazą - autentykacja, autoryzacja - wybór widoku (nie chodzi o szablon, tylko o sposób wyświetlania - np. html, xml, rss) Najprawdopodobniej robisz to w kontrolerze i akcjach. Przy zastosowaniu tego wzorca sam kontroler nie interesuje się, co robią filtry, w związku z czym nie ma potrzeby grzebania w jego kodzie. Jeżeli inicjujesz i zamykasz połączenie z bazą (lub robisz coś innego) w akcjach, to zamykasz sobie drogę do wymiany sterownika bazy bez modyfikowania kodu akcji. Akcje powinny operować na danych, a nie zajmować się rutynowymi czynnościami, takimi jak te, które przed chwilą wymieniłem. -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 8.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Moje polaczenie z baza polega na utworzeniu obiektu i stworzeniu polaczenia , wykonaniu zapytania i autmatycznemu zamknieciu polaczenia. Nie ma nic wspolnego z kontrolerem, a jedynie z modelami ktore poberaja dane i je przetwarzaja.
Autoryzacja pobiera config (no wlasnie sie zastanawiam, narazie jest na sztywno, ale chce walnac go co filtra ladujacego configi)
A wyswietlanie za pomoca SMARTY (html), przekazuje nazwe widoku i po prostu odpalam. No i ostatecznie zgodze sie z Toba. I racja jest ze kontroler nie interesuje sie filtrami, jak pisalem wyzej , wg mnie one maja przygotowac jedynie, dane potrzebne do analizy przed wykonaiem akcji. Jeszcze to idzie dosc prosto zrozumiec, lecz problem pojawia sie w zastosowaniach after.filtrow? Bo co jak co, ciezko mi sie doszukac jakiegos konkretnego zastosowania (no oprocz tworzenia widoki, jak napisane bylo wyzej) -------------------- TESTWIEDZY.PL - Przetestuj swoją wiedzę...
Nie ma rzeczy niemożliwych. Niemożliwe wymaga jedynie więcej czasu... Pracujemy na Ciebie! - MINDFLOW.PL |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
Cytat Moje polaczenie z baza polega na utworzeniu obiektu i stworzeniu polaczenia , wykonaniu zapytania i autmatycznemu zamknieciu polaczenia. Nie ma nic wspolnego z kontrolerem, a jedynie z modelami ktore poberaja dane i je przetwarzaja. Czyli przy 5 zapytaniach 5 razy się łączysz i 5 razy robisz close? przeciez nawiązanie połączenia zajmuje najwięcej czasu |
|
|
![]()
Post
#10
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Mogę Ci podać przykład, który od dawna chodzi mi po głowie - cache. Zapis do cache odbywa się w post-filtrze, a odczyt w pre-filtrze. Zastosowań jest wiele, niekoniecznie są one zawsze potrzebne.
-------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 8.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ludvik pomysle, narazie zrobilem jedynie cache zapytan do bazy ale to tak zostawie i nie sa one w filtrach. Ale rozmyslam nad cachowaiem klas i reszty porzebnych plikow alpikacji do includowania.
ActivePlayer, no wlasnei mnie zagiales. ![]() -------------------- TESTWIEDZY.PL - Przetestuj swoją wiedzę...
Nie ma rzeczy niemożliwych. Niemożliwe wymaga jedynie więcej czasu... Pracujemy na Ciebie! - MINDFLOW.PL |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.07.2025 - 04:49 |