Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][OOP]Walidacja, Klasa walidujaca,
MateuszS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Witam, zaczynam z OOP i napisałem prostą klasę walidującą dla małych formularzy, napiszcie co można poprawić, miałem ją zaopatrzyć w MVC i prezentować błędy widokiem ale to już na kiedy indziej.

  1. //wlasciwa klasa w moim nastepnym poscie w tym temacie ;P


Ten post edytował MateuszS 21.04.2010, 17:23:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Kiedyś też tak myślałem ale doszedłem wtedy do wniosku że w takim razie klasa walidacji jest zupełnie niepotrzebna.
Dlaczego miała by być niepotrzebna? To w jaki sposób coś ma być sprawdzane/filtrowane powinno zależeć wyłącznie od woli programisty. W dodatku takie, nazwijmy to sobie narzędzie (bo składa się ono docelowo z wielu obiektów) załatwia za Ciebie multum spraw (jak chociażby obsługę błędów, powiadomień, implementacji danych walidatorów itp. itd.) - Ty decydujesz jedynie co ma być czym potraktowane.
Dodatkowo jeżeli utworzysz sobie jakiś walidator (powiedzmy: String), który będzie miał kilka opcji: trim (true/false), striphtml (true/false), minlength, maxlength, gdzie dwa pierwsze domyślnie ustawione są na tak (w przykładzie podanym przeze mnie nie ma zaimplementowanej opcji predefiniowanych ustawień dla walidatora), a dwa ostatnie domyślnie są nie podane (są tak jakby wyłączone) już zyskujesz właściwie automatyczne walidację na takich zasadach jakie opisałeś. Więc jaki jest sens takiego dodatkowego komplikowania kodu? Bo jak będę miał dwa pola do wpisania treści, np.: krótka treść newsa, pełna treść newsa to dla pierwszego ustawiam sobie jedynie min/max na 20/200, a dla drugiego striphtml na false (dzięki czemu mogę podpiąć z poziomu panelu administracyjnego wstawić dowolnie wyglądającego newsa) oraz minlength na np. 50.
Zyskujesz wiele na elastyczności.


No i teraz muszę jeszcze odpowiedzieć na post Marcio... (IMG:style_emoticons/default/winksmiley.jpg)
Cytat
Jak pisalem przyklady wymyslilem w momencie.
W takim razie zastanów się przed napisaniem tego co Ci przyjdzie na język, bo to co piszesz może być bez sensu lub może źle oddawać to co chciałeś przekazać. Taka luźna rada. ;]

Cytat
Przeczytaj moj post kilka razy to zrozumiesz.
Cytat
Jakis praktyczny przyklad masz komponent News i pokolei klase News_Model,News_View i News_Controller.
Ehh... 02:00 to już trochę późno... zrozumiałem, że każda z News_XXX dziedziczy po jakimś News. Tak więc moje zarzuty względem tego fragmentu cofam.

Cytat
Prosze cie bardzo, nie badz smieszny.
Cóż... proszę rozwiń dlaczego uznałeś, że byłem w tamtym momencie śmieszy. Dlaczego sugerowanie by nie polecać czegoś co wymaga wiedzy dot. OOP oraz relatywnie rozbudowanej implementacji osobie, która jak widać jest na etapie poznawania elementów/paradygmatów obiektówki jest śmieszne.

Cytat
Ogolnie napisalem tylko dla przykladu ze model komponentu news powinien dziedziczyc po klasie mysqlDb u mnie dziedzizy po klasie Model ktora moze obslugiwac jaka kolwiek baze a jak bedzie potrzeba to nawet rss'a innego serwisu.
OK, fajnie że u Ciebie nie jest to zrypane (jak rozumiem klasa Model jest już na szczycie hierarchii dziedziczenia), ale w przykładzie, który podałeś było... i to bardzo - więc nie dziw się mojemu komentarzowi.

Cytat
http://docs.kohanaphp.com/general/models jak widac nie jest to bledne podejscie inne fw zreszta tez tak robia :]

To że ktoś "wielki" tak robi nie oznacza, że coś jest dobrze zrobione. O ile mi dobrze wiadomo na chwilę obecną żadnej z popularnych PHP-owych FW nie obsługuje poprawnie MVC (przez co owe FW wiele tracą) - doszły mnie jedynie słuchy, że ponoć YII coś w tym aspekcie zmienia, ale jeszcze nie miałem osobiście możliwości sprawdzenia tego, więc tutaj się wypowiadać nie chcę.

Cytat
Pamietaj ze nawet jesli odp na moj post bo cos ci nie pasowalo nie znaczy ze masz racje
Nie próbuj zrobić ze mnie hipokryty. To co napisałem tyczy się każdej wypowiedzi, czy mojej, czy Twojej - to była ogólna wskazówka dla każdego czytającego dowolną informację.

Cytat
Kurde no to ja chyba czegos nie rozumiem skoro mamy:
  1. class news_Model extends model { }
To news_model tez jest modelem w tym ze specjalizuje sie w pobieraniu news'ow z bazy/xml czy czegokolwiek.
Super... tutaj się zgadzam... ale w Twoim poprzednim poście było coś zupełnie innego...
Go to the top of the page
+Quote Post

Posty w temacie
- MateuszS   [PHP][OOP]Walidacja   21.04.2010, 15:58:09
- - Crozin   Dlaczego ten kod się do niczego nie nadaje? 1) P...   21.04.2010, 16:55:47
- - MateuszS   To tak: 1. Miałem tragiczny błąd w metodzie, nie p...   21.04.2010, 17:21:55
- - Spawnm   destruct masakryczny , echo w modelu ? Dodatkowo l...   21.04.2010, 17:29:51
- - Wicepsik   Walidacja NIPu nie polega tylko na policzeniu jego...   21.04.2010, 17:42:50
- - MateuszS   Spawnm, tak wiem, to nie jest problem zamienić na ...   21.04.2010, 18:24:03
- - Crozin   Cytat3. Mógłbyś wytłumaczyć o co chodzi z Cytatwa...   21.04.2010, 19:41:32
- - MateuszS   Niestety jest to dla mnie czarna magia co napisałe...   21.04.2010, 19:55:49
- - Crozin   CytatPoza tym wywala błędy z tym namespaceWidoczni...   21.04.2010, 20:17:58
- - MateuszS   CytatWidocznie masz PHP w wersji poniżej 5.3 - ale...   21.04.2010, 21:03:41
- - Crozin   CytatNo ja przecież napisałem skrypt który ma za z...   21.04.2010, 22:06:30
- - MateuszS   CytatRównież uważam, że branie się za FW w momenci...   22.04.2010, 11:51:06
- - Crozin   CytatNo nie przesadzajmy, podstawy pewne mamTego n...   22.04.2010, 13:30:24
- - zzeus   @Crozin mógłbyś rzucić kilka linków do artykułów k...   22.04.2010, 13:34:31
- - marcio   Cytat@Crozin mógłbyś rzucić kilka linków do artyku...   22.04.2010, 13:50:12
- - MateuszS   Crozin, to że nie użyłem w mojej klasie np. dziedz...   22.04.2010, 13:57:49
- - Crozin   CytatCrozin, to że nie użyłem w mojej klasie np. d...   22.04.2010, 16:50:25
- - MateuszS   No a jak wy się OOP uczyliście? Też mieliście taki...   22.04.2010, 19:31:53
- - marcio   Cytat(MateuszS @ 22.04.2010, 20:31:53...   22.04.2010, 20:50:39
- - MateuszS   He czyli głupie pytania kluczem do sukcesu To kol...   22.04.2010, 20:58:21
- - marcio   Taka ze dziedziczysz po klasie ktora rozszerza kla...   22.04.2010, 21:27:49
- - MateuszS   IMHO nie rozszyfrowałem skrótu acl. Mądrze piszesz...   22.04.2010, 21:52:07
- - Crozin   CytatJakis praktyczny przyklad masz komponent News...   23.04.2010, 01:02:49
- - marcio   Jak pisalem przyklady wymyslilem w momencie. Cytat...   23.04.2010, 09:29:00
- - MateuszS   Czyli jednak moja intuicja jeszcze ma się całkiem ...   23.04.2010, 13:12:58
- - Crozin   CytatKiedyś też tak myślałem ale doszedłem wtedy d...   23.04.2010, 13:57:22
- - MateuszS   Crozin, dało by się jakoś uprościć twoje klasy? Ta...   23.04.2010, 14:24:57
- - Crozin   Nie chcę już zaśmiecać wątku kolejnym długim listi...   23.04.2010, 16:42:30
- - marcio   CytatCóż... proszę rozwiń dlaczego uznałeś, że był...   23.04.2010, 17:09:22
- - MateuszS   Wielkie dzięki Crozin! To teraz pytania: 1. ...   23.04.2010, 17:31:27
- - smentek   Tablice mają to do siebie, że przechowują dane róż...   23.04.2010, 22:12:42
- - Crozin   CytatTwój walidator zwraca błędy (do tego poprzez ...   24.04.2010, 15:08:03
|- - smentek   Cytat(Crozin @ 24.04.2010, 16:08:03 )...   28.04.2010, 19:00:58
- - marcio   CytatTablice w swojej znanej z "normalnych...   24.04.2010, 17:57:00
|- - smentek   CytatTablice w swojej znanej z "normalnych...   28.04.2010, 18:43:24
- - MateuszS   Hmm... to ja może od nowa spróbuję napisać klasę, ...   24.04.2010, 22:54:01
- - Crozin   Skoro "filozofii", któregoś kawałka nie ...   25.04.2010, 00:34:00
- - MateuszS   Ok to tak, nie bardzo rozumiem jeszcze czemu używa...   25.04.2010, 08:03:55
- - Crozin   To zacznijmy od najłatwiejszego - przestrzeni nazw...   25.04.2010, 10:40:21
- - MateuszS   Albo jestem za głupi albo... właściwie to tylko to...   25.04.2010, 15:01:29
- - Crozin   JAk już napisałem... w PHP interfejsy nie grają is...   25.04.2010, 16:01:50
- - MateuszS   Ok, czyli nie wolno pojedynczemu obiektowi w tym p...   26.04.2010, 12:36:27
- - Crozin   Nie ma chyba jednoznacznej granicy. Po prostu... o...   26.04.2010, 14:34:22
- - MateuszS   Dzięki Crozin za cierpliwość (wiem że jej zasób ju...   27.04.2010, 19:11:54
- - Crozin   Cóż... możesz zawsze wrzucić kod - jeżeli już niko...   27.04.2010, 22:41:47
- - marcio   Ogolnie w jezykach takich jak Ruby/Python standart...   28.04.2010, 01:53:08
- - MateuszS   Jak najlepiej rozwiązać problem dodawania nowych o...   28.04.2010, 18:58:46
- - MateuszS   No dobra smentek, ale może wypowiedz się na temat,...   28.04.2010, 19:23:36
- - Crozin   CytatTablice w większości języków programowania mo...   28.04.2010, 20:12:27
- - MateuszS   No ok, ale Ty w swojej klasie zamieściłeś coś w st...   28.04.2010, 21:17:33
- - Crozin   To co ja zamieszczałem jako parametry to były właś...   28.04.2010, 21:20:40
- - smentek   Cytat(MateuszS @ 28.04.2010, 20:23:36...   4.05.2010, 15:19:32
- - Cysiaczek   Myślę, że iloczyn logiczny stanu walidatorów pozwa...   7.05.2010, 06:44:32


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

 



RSS Aktualny czas: 13.10.2025 - 16:23