Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> obsluga formularza
skowron-line
post
Post #1





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. <?php
  2.  
  3. class obsluga_formularza {
  4.  
  5. public $nazwa;
  6. public $adres;
  7. private $wzorzec = '/^[a-zA-Z0-9.-_]+@[a-zA-Z0-9-.]+.[a-zA-Z]{2,4}$/';
  8.  
  9.  
  10. function __construct($nazwa, $adres) {
  11.  
  12. $this -> nazwa = $nazwa;
  13. $this -> adres = $adres;
  14.  
  15. }
  16.  
  17. function policz_znaki() {
  18.  
  19. $ile_znakow = strlen($this -> nazwa);
  20. return $ile_znakow;
  21.  
  22. }
  23. function sprawdz_adres() {
  24.  
  25. if(!preg_match($this ->wzorzec, $this -> adres)){
  26. return "bledny adres e-mail";
  27. }else{
  28. return "adres e-mail jest poprawny";
  29. }
  30.  
  31. }
  32. function pokaz() {
  33. return $this -> policz_znaki().
  34. $this -> sprawdz_adres();
  35. }
  36. }
  37.  
  38.  
  39. echo'<form action="" method="post">
  40. nazwa:<input type="text" name="nazwa">
  41. adres:<input type="text" name="adres">
  42. <input type="submit" name="submit">';
  43.  
  44. if(isset($_POST['submit'])){
  45.  
  46. $parm = new obsluga_formularza($_POST['nazwa'], $_POST['adres']);
  47.  
  48. echo $parm -> pokaz();
  49.  
  50. }
  51. ?>


od jakiegos czasu usiluje sie nauczyc programowac obiektowo i napisalem cos takiego.
nie wiem czy jest to napisane poprawnie ale dziala jak ja to sobie zalorzylem.
lecz moje pytanie brzmi czy tak powinno to wyglada czy moze sprawdzanie poprawnosci wpisanych danych powinno byc poza klasa?? moze to zly przyklad ale chodzi mi o to ze jezeli teraz chcialbym sprawdzic czy pola zostaly wypelnione to czy mam to napisac w klasie czy poza nia??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ace
post
Post #2





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


Jasne,

Najprostrzy przyklad, twoja klasa "obsluga_formularza" jest odpowiedzialna za wyswietlenie DANEGO formularza, oraz metody do walidacji ma w sobie. Czemu?

Pomysl lepiej nad obiektem formularza, ktory bedziesz mogl rozszerzac. Walidacja w formularzu? Zle zagranie. Walidacje powinienes trzymac w zupelnie innym miejscu - inna klasa? ktora bedzie zawierac zbior wszystkich metod walidacji czego zywnie sobie chcesz...

Ludzie chcacy pisac obiektowo, piszac proceduralnie po prostu ubieraja zbior funkcji w obiekt... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pomysl inaczej, Formularz to jakis obiekt ma napewno jakies wlasnosci - lista pol, akcja ktora stanie sie po submit, wczesniej walidacja danych, kazde pole ma przypisane do siebie sposob walidacji, moze nie miec walidacji, moze miec 1 sposob walidacji, albo kilka walidacji...

Twojego przykladu nie da sie rozszerzac. W obiektowosci liczy sie to, ze dobrze napisane obiekty mozesz wykorzystac wiele razy, pozatym latwosc rozbudowy/przebudowy jest wielkim plusem OOP. Wszystko sklada sie z obiektow. Wiec obsluga_formularza powinna tez dzielic sie na wiele mniejszych obiektow. Chociazby lista pol, albo walidacje w klasie do obslugi formularzy.
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: 27.12.2025 - 11:34