Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]klasa walidacji
gitbejbe
post
Post #1





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

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


Witam

Nie wiedziałem czy wrzucać to do oceny, bo w sumie bardziej chodzi o to aby ktoś powierzchownie rzucił okiem, czy ide w dobrym kierunku. To moja pierwsza klasa - bazowa, bo chciałbym na niej m.in oprzec pozostałe klasy.

starałem sie uprościć ją do minimum, link do Github'a

jak widać dodanie nowej wartości do walidacji odbywa się w ten sposób:
  1. $validation = new Validation();
  2.  
  3. $validation -> addKey('imie') -> addValue($_POST['imie']) -> addRules('req,min=3,max=10');
  4. $validation -> addKey('login') -> addValue($_POST['login']) -> addRules('req,min=10');
  5. $validation -> addKey('haslo') -> addValue($_POST['haslo']) -> addRules('req,login,min=3,max=10,url,striptags,html,int,'); //itd itp
  6. ...
  7. $validation -> startValidation();


sprawdzenie czy wszystkie pola przeszły poprawną walidacje wywołuje sie poprzez warunek if(!$validation->errors)
odwołanie się do tablicy błędu, np : $validation->errors['imie'] <- bledy beda wyswietlane po kolei począwszy od pierwszej zadeklarowanej wartości do sprawdzenia

błędów nie ma, wszystko działa, ale jak juz wspomniałem, to moja pierwsza samodzielnie napisana klasa, tak więc chciałbym was prosić o to, abyście mogli podpowiedzieć mi czy robie jakieś błędy lub czego mógłbym jeszcze użyć do niezawodności tej klasy

Ten post edytował gitbejbe 30.09.2013, 12:30:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
gitbejbe
post
Post #2





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

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


Cytat
Zastanów się co robisz, Validator (sprawdzanie poprawności wprowadzonych danych) czy też Filter (przefiltrowanie wprowadzonych danych i w miarę możliwości zwrócenie poprawnego formatu).

Tutaj masz racje. filtry typu striptags/htmlspecialchar nie powinny tutaj istnieć. Jednak ten skrypt bedzie stosowany tylko dla moich potrzeb i nie robie tego "komercyjnie". Sens tych 2 metod jest znikomy - a nawet żadny, ale dodałem je - przyjnajmiej tymczasowo, dla zwykłego picu : ) Powinienem o tym był wspomnieć...

Cytat
Ponadto, pomysł z dodawaniem metody i jednoczesnym aktualizowaniu tablicy statycznej nie trafiony. Przecież możesz sobie ustalić że metody walidacji to takie które zaczynają się od _valid__nazwa i przy pomocy call i callStatic wybierać odpowiednie metody (ewentualnie method_exists podczas walidacji zbiorowej).


co do call to chcialem własnie uniknąć wywoływania walidatorów w style " ->required() ->max(12) -> is_int() itd. Osobiscie bardziiej przypada mi do gustu wywoływanie jedenej metody i w niej podawania walidatorów. Tablice statyczna powstała po to aby móc wszystko ustawwić na poczatku dokumentu w klasie abstrakcyjnej. Wcześniejsza wersja opierała się na case'ach i to faktycznie było nietrafione rozwiązanie - co nie oznacza, ze obecna metoda jest elegancka. Tak to jednak sobie wymyśliłem

Cytat
ECHO w klasie? A nie ładniej by było, gdyby te błędy były zbierane do obiektu/zmiennej w tej klasie? Wtedy dajesz metodę do pobrania wszystkich komunikatów i wyświetlasz je w odpowiednim formacie, nie narzuconym z góry. To samo z wartościami.

Tutaj też masz racje. Obsługe błędów musze jeszcze dopracowac. A pomysł jak najbardziej fajny : )


Cytat
Dlaczego postanowiłeś postawić na tablicę z nazwami walidatorów, które umieściłeś w Engine, natomiast sama deklaracja metod jest w klasie dziedziczącej?


powód taki sam jaki podałem wczesniej. Chciałem aby cały mechanizm obsługi był tylko w jedenej klasie abstrakcyjnej, tak abym w klasie dziedziczącej mógł skupić sie tylko na metodach walidujących : )

Pisząc ten skrypt na nowo, kierowąłem się głównie tym co sam mi napisałeś w tym temacie:

Cytat
- przede wszystkim, klasa główna zawiera tylko logikę i w miarę zwiększania ilości walidatorów nie zwiększasz ilości linii w pliku, co wpływa na czytelność,
- łatwiej jest znaleźć miejsce modyfikacji algorytmu konkretnego walidatora
- wygodniej tworzy się metody pomocnicze
- prostsza identyfikacja błędów (id walidatora, albo nazwa klasy) i ich "ludzka" definicja


dokladnie wlasnie zrobiłem to w ten deseń : )
- logika tylko w jednej klasie
- oddzielilem walidatory do osobnej klasy i moge łatwo je edytowac oraz rozwiac w razie potrzeby
- metody pomocnicze rowniez mozna latwo dopisać
- tutaj tez sie kierowałem Twoja wczesniejszą wypowiedzią. Oddzieliłem pobranie tablic z danymi wejsciowymi (POST/GET) od ustawienia walidatorów dla tej tablicy.


Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 22:53