Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Walidacja w MVC
skubekk
post 22.12.2006, 19:07:24
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 8.08.2003
Skąd: Częstochowa

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


Mam mały dylemacik dotyczący OOP. Gdzie najlepiej umiescic walidacje danych dostarczonych przez uzytkownika? Ja widze 3 rozwiązania
1) Przy "setach"
  1. <?php
  2. class user
  3. {
  4. public function setLogin( $login )
  5. {
  6. if ( !UserValidate::login( $login ) )
  7. {
  8. throw new ValidateException( 'login' );
  9. }
  10. $this->setField( 'login', $login );
  11. }
  12. }
  13. ?>

2) Przy zapisywaniu danych
  1. <?php
  2. class user
  3. {
  4. public function save()
  5. {
  6. if ( !UserValidate::login( $this->login ) )
  7. {
  8. throw new ValidateException( 'login' );
  9. }
  10. if ( !UserValidate::pass( $this->pass ) )
  11. {
  12. throw new ValidateException( 'pass' );
  13. }....
  14.  
  15. // zapisywanie
  16. }
  17. }
  18. ?>

3) W kontrolerze zanim wprowadzimy dane do obiektu
  1. <?php
  2. class UserController
  3. {
  4. public function save()
  5.  {
  6.  try
  7.  {
  8. if ( !UserValidate::login( $_POST['login'] ) )
  9. {
  10. throw new ValidateException( 'login' );
  11. }
  12. if ( !UserValidate::pass( $_POST['pass'] ) )
  13. {
  14. throw new ValidateException( 'pass' );
  15. }....
  16. }catch(ValidateException $e)
  17. {
  18. echo $e->getMessage();
  19. }
  20. $user = new user;
  21. $user->setLogin( $_POST['login'] )
  22. $user->setPass( $_POST['passs'] )
  23. $user->save();
  24.  } 
  25. }
  26. ?>


Jak wy rozwiązaliscie ten problem? Z góry dzięki za odpowiedz.
Go to the top of the page
+Quote Post
envp
post 22.12.2006, 19:37:37
Post #2





Grupa: Zarejestrowani
Postów: 359
Pomógł: 1
Dołączył: 16.04.2006
Skąd: Łódź

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


Hmm mi się wydaje, że w kontrolerze smile.gif
Go to the top of the page
+Quote Post
darektbg
post 22.12.2006, 19:48:08
Post #3





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 25.09.2006

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


Witam !
Wydaje mi się, że najlepszym miejscem będzie kontroler winksmiley.jpg

Pozdrawiam
Darektbg


--------------------
skocz.org - system skracania linków
Go to the top of the page
+Quote Post
dr_bonzo
post 22.12.2006, 20:35:06
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Walidujesz model -- to w modelu.
Pozatym pomysl jak bedzie wygladac akcja tworzenia obiektu i edycji + walidacja wszystkich pol w kontrolerze.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Strzałek
post 22.12.2006, 20:54:44
Post #5





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


dr_bonzo wyjaśnił gdzie powinna zajść walidacja, ja jeszcze dołożę swoje 2 grosze. Mianowicie używanie statycznych metod do walidacji jest dość mało obiektowe, jak i mało wygodne. Zaraz wrzucę Ci moją małą klasę do walidacji.


--------------------
Go to the top of the page
+Quote Post
Cysiaczek
post 22.12.2006, 21:03:22
Post #6





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Mało obiektowe? Powiedz mi dlaczego i jak to ma być obiektowe - nie potrafię sobie tego wyobrazić. Może chodzi o zastosowanie pewnej implementacji dekoratora?

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Strzałek
post 22.12.2006, 22:21:34
Post #7





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


Otworzyłem masę zakładek a zapomniałem o tym, ale już jestem wraz z moim obiecanym kodem: http://forum.php.pl/index.php?showtopic=58987


Cysiaczek a co obiektowego jest w używaniu klasy która wszystkie metody ma statyczne? To tak samo jak strukturalnie, po za tym ze jest class, public przed metodą, oraz inaczej się to wywołuje winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
ActivePlayer
post 22.12.2006, 22:23:20
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


ja dodam tez cos o czym nie wszyscy wiedzą (wiedzieli:P) a strzalek wie smile.gif

http://strzalek.net/blog/3/input-filter
Go to the top of the page
+Quote Post
Cysiaczek
post 22.12.2006, 23:19:02
Post #9





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




@strzałek - nic nie ma, ale czy wogóle musi być? Moim zdaniem nie musi, bo nie ma sensu na siłę wciskać obiektów wszędzie. Ubierając zastaw filtrów nawet w zwykłą klasę zyskujesz ładny interfejs : )

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
skubekk
post 23.12.2006, 10:38:24
Post #10





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 8.08.2003
Skąd: Częstochowa

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


Własną klase do obsługi walidacji juz mam. Zresztą umiesciłem ją juz jakis czas temu na tym forum. http://forum.php.pl/index.php?showtopic=56211&hl=
Cytat
Strzałek: ...Mianowicie używanie statycznych metod do walidacji jest dość mało obiektowe, jak i mało wygodne...

Owe statyczne metody to implementacja dekoratora.
Dzięki za rozwianie moich wątpliwości.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 20.07.2025 - 06:11