![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Hej, chce poddać ocenie swoją klasę walidującą dane. Powiedzcie, co jest dobrze, a co źle. Co do robić, co przerobić. Proszę o opinie
![]()
Przykład użycia:
Ten post edytował in5ane 29.10.2013, 17:07:57 -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Brak możliwości normalnej rozbudowy czy brak jakiejkolwiek informacji o wykrytych błędach kompletnie dyskwalifikuje tą klasę.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
O tym, żeby wskazywać, jaki błąd to myślałem, o to ją rozbuduję. A co do normalnej rozbudowy, co masz na myśli? Jakiś przykład i dlaczego mojej klasy nie można rozbudować?
@edit: dodałem wyświetlanie, jaki jest błąd. Ten post edytował in5ane 29.10.2013, 17:08:13 -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat @edit: dodałem wyświetlanie, jaki jest błąd. Zwracane informacje są bardzo nieprecyzyjne. Zamiast konkretnego zestawu informacji np. "tekst za krótki, min. 6 znaków, podano: 2" (oczywiście w formie, którą da się normalnie przetwarzać) dostaję jedynie "tekst za krótki".Cytat A co do normalnej rozbudowy, co masz na myśli? Jakiś przykład i dlaczego mojej klasy nie można rozbudować? Powiedzmy, że chcę wykorzystać Twoją klasę. Jak miałbym dodać do niej nowy walidator, np. sprawdzający poprawność nr NIP bez ingerencji w Twój kod? Nie da się tego zrobić normalnie.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
zgadzam się z przedmówcą.
Troche źle to wykombinowałeś bo teraz jeśli chciałbym dodać jakąś funkcje to muszę najpierw napisać jedną która wyłapie nazwe walidatorą, a póśniej drugą która jest uruchamiana z tej pierwszej tylko po to aby coś sprawdzić.. słaba opcja i sam zobaczysz, ze przy np 50 różnych walidatorach będziesz pisać 2 razy więcej kodu niż powinieneś i łatwo się pogubisz. ostatnio wrzucałem tutaj swoja klasę walidacji https://gist.github.com/gitbejbe/6762020 nie jest może ona super fajna i nie wiadomo co jeszcze, ale działa i dobrze mi się z nią pracuje : ) + taki, że łatwo można ją rozbudować o co się chce i jest mega prosta. Przydałoby sie jej jeszcze definiowanie niestandardowych treści błędu. Tak czy siak jakby co będziesz mieć porównanie : ) sam też pisałem patrząc na działanie innych |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Obie te klasy są bez sensu. Słyszeliście w ogóle kiedyś o programowaniu obiektowym? Oboje jedyne co zrobiliście, to zapakowaliście zbiór funkcji w "class". Klasa @gitbejbe już trochę lepiej ze względu na engine, ale i tak spore pominięcie z sensem.
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
obiektówką zajmuje sie od niedawna, a ta klasa to pierwsze co napisałem w oop. Lecę teraz na codeigniterze i nie daje sobie ręki uciąć bo tylko rzuciłem okiem na ich skrypt walidacji i wydaje mi się, że schemat jest podobny - po za tym, że zasady określa się w jednym stringu rodzielonym znakiem | oraz pomijając pozostałe funkcje pomocnicze. Walidatory uruchamia wtedy skrypt a nie ja osobiście odwołując się do danego walidatora (na początku własnie tego typu napisałem skrypt, ale później przerobiłem go na to bo ktoś tutaj napisał, ze tak będzie lepiej).Tej klasie dużo brakuje i jestem tego świadom ale działać działa i spełnia swoją role bez zarzutu i można ją łatwo rozszerzać, a wkleiłem ją tylko po to aby autor tematu mógł sobie ją porównać
Będę wdzięczny jeśli powiesz mi co jest głównie nie tak i jak powinien wyglądać prawdziwy schemat takiego skryptu. Z chęcią przyjmę każdą rade : ) |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Zobaczcie jak wygląda walidacja danych w Kohanie 3:
http://kohanaframework.org/3.3/guide/kohan...rity/validation Moim zdaniem obok Query Buildera dla bazy danych jest to najmocjniejszy punkt Kohany. W Waszych kodach brakuje mi chociażby możliwości dodania callbacka (np. array($obj, 'validateMe')) - nie trzeba wówczas tworzyć globalnej metody walidacyjnej, która i tak nie byłaby użyta w obrębie innej walidacji. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@gitbejbe: Na CodeIgnitera nawet nie patrz - to kompletna parodia OOP.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
obiektówką zajmuje sie od niedawna, a ta klasa to pierwsze co napisałem w oop. Lecę teraz na codeigniterze i nie daje sobie ręki uciąć bo tylko rzuciłem okiem na ich skrypt walidacji i wydaje mi się, że schemat jest podobny - po za tym, że zasady określa się w jednym stringu rodzielonym znakiem | oraz pomijając pozostałe funkcje pomocnicze. Walidatory uruchamia wtedy skrypt a nie ja osobiście odwołując się do danego walidatora (na początku własnie tego typu napisałem skrypt, ale później przerobiłem go na to bo ktoś tutaj napisał, ze tak będzie lepiej).Tej klasie dużo brakuje i jestem tego świadom ale działać działa i spełnia swoją role bez zarzutu i można ją łatwo rozszerzać, a wkleiłem ją tylko po to aby autor tematu mógł sobie ją porównać Będę wdzięczny jeśli powiesz mi co jest głównie nie tak i jak powinien wyglądać prawdziwy schemat takiego skryptu. Z chęcią przyjmę każdą rade : ) OOP to zabawa w klocki. Muszą być one łatwo nakładane, zdejmowane, wymieniane. Klasy powinny być tworzone tak, aby nie trzeba było ingerować w ich kod dodając kolejne funkcjonalności, tylko bawić się klockami. Zarówno w Twojej jak i @insane'a klasach nie ma możliwości manipulowania walidatorami. Są one wstawione na sztywno i koniec... nic nie zmienisz bez ingerencji w istniejący już kod. Jedyną możliwością byłoby rozszerzanie klasy za każdym razem jak chcesz dodać kolejny walidator. Ale jak wtedy będziesz nazywał dzieci klasy? - Validator -> ValidatorWithNip -> ValidatorWithNipAndIdentityCardNumber -> validatorWithNipAndIdentityCardNumberAndImageSize... itd? Zupełnie bez sensu. Poza tym jak będziesz chciał z tego schematu tylko kolejne walidatory Nip i ImageSize bez IdentityCardNumber, to co zrobisz? Nic. Przykładowa implementacja mająca sens: Powinien zostać stworzony jakiś menadżer walidatora:
Teraz należy stworzyć interfejs dla przymusów:
Możemy teraz tworzyć dowolne przymusy implementując stworzony interfejs:
I teraz możemy dowolnie manipulować przymusami dla dowolnych pól:
Wszystko pisane z palca, więc mogą być literówki, ale chodzi o zasadę działania. Budowa klockowa ![]() Ten post edytował pyro 5.11.2013, 22:07:28 -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
pyro
welkie dzięki za to, że chciało Ci się opisać to w ten sposób : ) Na pewno to przeanalizuje i przerobie swój skrypt walidacji : ) Podeśle go na forum jak skończe. Trudno jest dojść do czegoś/wpaść na coś samemu nie mając osoby od której można się uczyć, dlatego warto tutaj zaglądać : ) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 2 Dołączył: 25.03.2009 Skąd: Pionki Ostrzeżenie: (0%) ![]() ![]() |
Szukam podobnego rozwiązania, tzn. takiego gdzie podaję dane i tworzony jest formularz i po kliknięciu w submit dopiero sprawdza walidację.
Macie może coś takiego? Znalazłem "PHP Form Builder Class", jest rozbudowany, ale nie ma możliwości ustalenia min i max lenght, fajna za to jest opcja przechowywania danych w formularzu nawet po powrocie z innej podstrony (dane przechowywane są w sesji). -------------------- Organizujesz konkurs? Chcesz coś wygrać? Wejdź na www.e-Konkursy.info :)
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 19:08 |