Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Interpretacja adresu otrzymanego od przegladarki
Forum PHP.pl > Forum > Przedszkole
olechafm
adres.pl/modul/kontroler/akcja/parametr1/parametr2/parametr3

przy analizie adresu sprawdzam ile dana akcja (metoda) wymaga parametrów, gdy adres będzie zawierał zbyt małą ich ilość, rzucam błędem

co w przypadku gdy dostanę zbyt dużą ilość parametrów? powinienem akceptować tylko dokładnie taką ich ilość jaką wymaga metoda czy mogę zinterpretować tyle ile jest wymaganych a resztę zostawić? co w przypadku parametrów opcjonalnych?
aachi
Ja osobiście nie przejmuję się nadmiarem danych i parametry które nie są mi potrzebne po prostu ignoruje. Tak chyba lepiej, bo właśnie czasami możesz potrzebować parametrów "opcjonalnych".
by_ikar
Jak dla mnie ten adres powinien przyjmować określone wartości, tj nie powinien przyjmować jakichś dodatkowych parametrów które ktoś sobie może wpisać. Zamiast tworzyć jakiś swój system routingu, podpatrz jak to jest zrobione w frameworkach, chociażby takim symfony, gdzie twój zdefiniowany routing zostaje przerobiony na wyrażenie regularne, które następnie jest dopasowywane do adresu, i jeżeli adres jest dłuższy, krótszy, lub parametry są nieodpowiednie (można zdefiniować na poziomie routingu wyrażeniem regularnym jakie dane chcesz otrzymać, przykładowo same cyfry 0-9+ lub \d+) i jak ktoś poda jakikolwiek inny znak, na który ty nie pozwalasz, to wyrażenie nie zostanie dopasowane i możesz rzucić wyjątek, który obsłużysz jako 404.

Sam tak zrobiłem z routingiem symfony z czego w sumie jestem zadwolony, bo jest to chyba najlepszy system routingu jaki został dla frameworków wymyślony wink.gif
olechafm
oczywiście rozumiem, że lepiej korzystać ze sprawdzonych rozwiązań, pomijając fakt że jedne sprawdzają się lepiej inne gorzej i zależy to od potrzeby danej sytuacji co komu pasuje i uważa za "dobre"

ale napisanie własnego routingu jak i wszystkich innych elementów aplikacji to najlepszy sposób na praktyczną naukę, jak już będę wiedział co z czym się je i jak co powinno działać bo napisałem to sam i nauczyłem się na przykładach praktycznych, to wtedy mogę sobie pozwolić na oszczędzanie czasu poprzez używanie takich gotowych rozwiązań jak chociażby framewor'ów, które właśnie temu powinny służyć uważam, że nie powinno od razu sięgać się po gotowce bo to maskuje tylko niewiedzę
by_ikar
Cytat(olechafm @ 29.11.2011, 00:29:29 ) *
oczywiście rozumiem, że lepiej korzystać ze sprawdzonych rozwiązań, pomijając fakt że jedne sprawdzają się lepiej inne gorzej i zależy to od potrzeby danej sytuacji co komu pasuje i uważa za "dobre"

ale napisanie własnego routingu jak i wszystkich innych elementów aplikacji to najlepszy sposób na praktyczną naukę, jak już będę wiedział co z czym się je i jak co powinno działać bo napisałem to sam i nauczyłem się na przykładach praktycznych, to wtedy mogę sobie pozwolić na oszczędzanie czasu poprzez używanie takich gotowych rozwiązań jak chociażby framewor'ów, które właśnie temu powinny służyć uważam, że nie powinno od razu sięgać się po gotowce bo to maskuje tylko niewiedzę


Routing z symfony jest dość mocno z samym symfony powiązany i żeby to jako tako chodziło i miało sens, trzeba to rozłożyć na czynniki pierwsze, wyciągnąć najważniejsze metody i przełożyć do swojej klasy. W symfony dla routingu są dodatkowe opcje, które raczej przeważnie nie są potrzebne, jak chociażby możliwość zdefiniowania dodatkowej klasy routingu już na poziomie samego routingu. Np klasę która będzie rozpoznawać na jakiej jesteś subdomenie, jeżeli masz ustawiony wildcard dla strony. Przeważnie taka funkcjonalność nie jest potrzebna, ja osobiście się jej pozbyłem wink.gif Napisałem powiedzmy swojego FW którego poskładałem z różnych inncyh frameworków, wyciągając z nich to co mi się w nich najbardziej podobało. W symfony najbardziej spodobał mi się routing i yaml. W zendzie podobała mi się całkiem klasa zend_select, ale część rzeczy jakie tam była zawarta nie podobała mi się wcale. W Yii podobała mi się klasa odpowiedzialna za konfigurację, a dokładniej to sposób poruszania się po konfiguracji. Podobny zresztą był w Kohanie 2, z tym że tam było to mniej wydajnie rozwiązane. Do całości dokładasz jeszcze kilka rzeczy, i masz już swojego FW. Wzorować się jest dobrze, podczas pisania tego rozwiązania w swój sposób dochodzisz jak to działa i później całość znasz na wylot.

Serio popatrz na routing symfony, może i ci przypadnie do gustu, jak coś to nawet będę mógł ci pomóc, jeżeli czegoś w nim nie będziesz rozumieć wink.gif
olechafm
Z góry dzięki, przyjrzę mu się dokładnie smile.gif
by_ikar
Jak już się przyjrzysz, tutaj masz kilka linków z których kiedyś skorzystałem jak byłem na etapie analizowania tego routingu:

- http://pookey.co.uk/wordpress/archives/80-...without-symfony
- http://bedger.pl/99,sposoby-wplywania-na-s...-w-symfony.html

i mały bonusik, bo może i tobie yaml się spodoba, a jego implementacja jest banalna, a konfiguracja aplikacji jest prosta i czytelna: http://pookey.co.uk/wordpress/archives/81-...fun-with-sfyaml

Z tych kilku klas routingu które są w symfony, u mnie powstała jedna która razem z komentarzami ma prawie 300 linii, to tyle co nic, a korzyści płynące z takiego routingu są ogromne wink.gif

PS. oczywiście ja routing zbudowałem na bazie routingu z symfony 1.4 ten routing w symfony 2 jakoś mi nie przypadł do gustu 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.