bigZbig
26.06.2006, 13:12:08
Napisalem sobie taka klase, ktora jest kontenerem dla tablic superglobalnych $_GET, $_POST, $_COOKIE, $_FILES, $_SERVER. Zapewnia obiektowy sposób dostepu do zmiennych oraz umozliwia wstepna filtracje danych pod katem bezpieczenstwa. (Zastanawiam sie jeszcze czy zczytywac dane z tablic poprzez referencje, czy moze lepiej przekopiowac dane do obiektu po czym zwyczajnie wyczyścic predefiniowane tablice.)
Obiekt bedacy instancja tej klasy posiada tez metode redirect, ktora umozliwia przekierowanie oraz zachowanie kopi samego siebie. Tak wiec po przekierowaniu we wlasciwosci oRedirectedObiekt bierzacego obiektu bedzie znajdowala sie instancja tego obiektu z przed przekierowania.
Jaka nadac nazwe mojej klasie aby oddawala jej funkcjonalnosc.
dr_bonzo
26.06.2006, 13:22:40
We frameworkach zazwyczaj nazywa sie to Request (tzn. Req. sie m.in. tym zajmuje)
w akcji:
$this->getRequest()->getParameter( 'id' );
a w ZendFramework masz wlasnie walidacje/filtracje/wyciaganie (chyba tez w requescie) danych z get/post/itd.
bigZbig
26.06.2006, 13:26:27
W Zend Farameworku nie ma czegos takiego. Mozna przeprowadzic filtrowanie danych dzieki Zend_InputFilter, ale to sa tylko proste testy.
-- edit --
Mowiac proste mam na mysli to, ze nie ma innej funkcjonalnosci poza filtrowaniem danych
dr_bonzo
26.06.2006, 13:49:39
No to InputFilter.
Cytat
W Zend Farameworku nie ma czegos takiego. Mozna przeprowadzic filtrowanie danych dzieki Zend_InputFilter, ale to sa tylko proste testy.
A czego ty potrzebujesz?:
masz tam (jak pamietam) sprawdzenie czy parametr jest liczba (strngiem), wyciagniecie parametru jako liczby (stringa,...), sprawdzenie regexem
Co do referecji/usuweania tablic -- lepiej usunac, bo nie popsujesz sobie tych tablic innym skryptem, a i inne skrypty (korzystajace bezposrednio z $_*) nie beda dzialaly gdy wyczyscisz te tablice.
A o co tym redirekcie chodzi?
NuLL
26.06.2006, 14:10:33
Co do nazwy - moze wtedy inputAccessor
bigZbig
26.06.2006, 14:19:29
A propo's redirecta - np. odbierasz dane z formularza. Sa niepoprawne. Przekierowujesz na strone generujaca formularz. Teraz obiekt nazwijmy to redirecta zawiera kopie samego siebie z przed przekierowania (bledne dane). pobierasz te kopie, wyciagasz z niej bledne dane i odpowiednio wyswietlasz komunikaty co jest nie tak.
Ludvik
26.06.2006, 16:08:24
A nie lepiej po prostu HttpRequest? Tylko, że te przekierowania psują tutaj sprawę, bo to raczej należy do odpowiedzi, a nie żądania. Może rozdziel to po prostu na dwa obiekty - Request i Response i połącz jakoś logicznie.
Vengeance
1.07.2006, 23:01:38
"W Zend Farameworku nie ma czegos takiego. Mozna przeprowadzic filtrowanie danych dzieki Zend_InputFilter, ale to sa tylko proste testy."
Dlatego pewnie są dwie klasy. Wszak Request i Validation to nie to samo.
Może też warto Tobie tak zrobić... a raczej powinno się.
A redirect bardziej mi pasuje do klasy Response... tak samo jak ustawianie ciastek, wysyłanie nagłówków czy flashowanie bufora wyjściowego itp.
bigZbig
3.07.2006, 07:49:20
@Vengeance - w mojeje klasie nie ma tych wszystkich filtrow, ktore są np. w kalsie Zend_InputFilter. W moim rozwiązaniu planowałem umiaścić jedynie filtry bezpieczeństwa eskejpujace cudzyslowy lub sredniki albo zmieniające je na encje html. Typowe testy poprawnosci danych zamierzam przeprowadzać w innym miejscu.
Co do redirecta to może to faktycznie nienajlepsze miejsce.
piczu
3.07.2006, 21:04:26
tez mam taka klase w swoim framie o nazwie Input. Tak ladnie to wyglada z moja druga klasa Output

.
Cytat("bigZbig")
umozliwia wstepna filtracje danych pod katem bezpieczenstwa
ja stworzylem funkcje na wzor input_get w razie jej braku na serwerze.
Cytat("bigZbig")
Zastanawiam sie jeszcze czy zczytywac dane z tablic poprzez referencje, czy moze lepiej przekopiowac dane do obiektu po czym zwyczajnie wyczyścic predefiniowane tablice.
dla bezpieczenstwa stosuje drugi sposob
bigZbig
4.07.2006, 07:28:24
@piczu - ja sie sklaniam bardziej ku referencji bo wtedy moge przefiltrowac wartosci zmiennych a jednoczesnie uzyc skryptow zewnetrznych korzystajacych z tablic superglobalnych. Z drugiej strony w swoich klasach moge się do wartosci tych zmiennych odwolywac w sposob obiektowy.
Sh4dow
4.07.2006, 12:03:43
Nie no, temat jak nazwac klase. Sadze ze to dosc powazny problem. No chyba ze nie tworzysz dokumentacji, to sie zgodze moze byc problematyczna. Ale sadze ze dokumentacja moze wiele rzeczy rozwiazac.
Cysiaczek
4.07.2006, 12:12:24
Sh4Dow - możesz powiedzieć jasniej. Ja znam tylko zasady tworzenia nazw klas w PEAR i "mój sposób".
bigZbig - po prostu RequestResolver, request_Resolver etc. Jesli chcesz jakąś inną - bardziej egzotyczną nazwę, to proponuję RequestReBuilder - no w kjażdym razie coś w ten deseń. Bo jak rozumiem podstawowym zadaniem tej klasy jest odwzorowywanie żądań HTTP do postaci czytelnej dla reszty aplikacji?
Sh4dow
4.07.2006, 12:19:39
Nazywasz klase tak zeby byla w miare jasna, InOut, Input, Output, Request ... to na szybko przyklady, a jak bardzo chcesz mozesz nazwac przeciez GlobalVarsWarpper a nawet GlobalVarsWarpperWithFiltring. Co źle ? Mnie sie podoba
bigZbig
4.07.2006, 12:52:05
Podstawowe zadanie to zbieranie wszystkiego z tablic superglobalnych, proste filtrowanie pod wzgledem bezpieczenstwa i udostepnianie w postaci obiektowej.
@Sh4dow - podziwim Twoją kreatywność w wymyślaniu nazw ale z tym "GlobalVarsWarpperWithFiltring" to już Cię troszkę poniosło. Lubię nazwy krótkie - takie, które mogę objąć jednym spojrzeniem
Sh4dow
4.07.2006, 14:47:34
Wiem ze mnie poniosło, zrobiłem to celowo. Chciałem pokazać ze nic nas nie ogranicza w nazwenictwie klas. Ja taka klase jak ty masz nazwalem jako Input, w starym systemie to bylo to InOut.
Poprostu topic na temat nazw klas nie powinien sie pojawic. Kazdy ma jakas technike nazewnictwa. Ja czasami uzywal wlasnie nazw typu GlobalVarsWarpper, tylko ze ta klasa bedzie nalezala do grupy klas Warpper ktore beda mialy jakies okreslone zadania. Klasy z koncowka Model to oczywiscie modele. mi to pomaga w skonfigurowaniu funckji __autoload(); co powoduje brak zamartwianie sie o includy. Wiec jaka masz technike tak nazwij.
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.