Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [klasa][php] Validation
PiotrekM
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 6
Dołączył: 20.12.2009

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


Witam,
napisałem dla siebie klasę walidacji. Nigdy nie korzystałem z walidacji, tak więc nie wiem czy jest dobrze napisane.
kod się nie zmieścił, więc wrzuciłem na stronę typu no-paste
na nopaste.pl
na wklej.org
Użycie:
  1. validation::checkString(array('test' => 'lorem ipsum dolor sit amet'));
  2.  
  3. validation::setValidations(array('test' => array(
  4. 'maxlenght' => 3,
  5. 'minlenght' => 100,
  6. 'between' => array(10,11),
  7. 'type' => 'bool',
  8. 'maxtimechar' => 'a[spilit]0',
  9. 'required' => true,
  10. 'regex' => '/([0-9]+)/'
  11. )));
  12.  
  13. echo (validation::isValid('test')) ? 'true' : 'false';
  14.  
  15. if( count( @validation::$error['test']) > 0) {
  16.  
  17. echo '<ul>';
  18.  
  19. foreach( validation::$error['test'] as $error) {
  20.  
  21. echo '<li>' . $error . '</li>';
  22. }
  23.  
  24. echo '</ul>';
  25. }

Opcje walidacji
Kod
maxlenght - maksymalna ilość znaków w stringu
minlenght - minimalna ilość znaków
between - w tablicy: minimalna oraz maksymalna ilość znaków
type - typ
maxtimechar - maksymalna liczba wyrazów bądź znaków w stringu (słowo oddzielone od liczby [spilit] (a[spilit]5))
required - string nie może być pusty, jeżeli damy true
regex - regex

pola z błędami są publicznie dostępne, także można jest dowolnie zmieniać.

Ten post edytował PiotrekM 23.03.2010, 19:32:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Jest niepotrzebnie statyczna, w dodatku nie wiem czemu dziedziczysz po exception, te wyjątki robią tam zbędny chaos, ich użycie jest źle przemyślane.

Ja bym zrobił coś na ten wzór:
  1. <?php
  2.  
  3. interface i_validation {
  4. public function isValid($name);
  5. public function setValidation($options);
  6. }
  7.  
  8. class validation {
  9.  
  10. public function check($name, i_validation $obj) {
  11. return $obj->isValid($name);
  12. }
  13.  
  14. }
  15.  
  16. class validation_string implements i_validation {
  17.  
  18. private $status=false;
  19. private $options;
  20.  
  21. public function isValid($name) {
  22. if ($this->status != false) {
  23. if (preg_match($this->options['regex'], $name) && strlen($name) >= $this->options['minlenght'] && strlen($name) <= $this->options['maxlenght']) {
  24. return true;
  25. }else{
  26. return false;
  27. }
  28. }
  29. }
  30.  
  31. public function setValidation($options) {
  32. $keys = array('minlenght', 'maxlenght', 'regex');
  33. if (count(array_diff($keys, array_keys($options))) == 0) {
  34. $this->options = $options;
  35. }else{
  36. return false;
  37. }
  38. $this->status = true;
  39. return true;
  40. }
  41.  
  42. }
  43.  
  44. $obj = new validation();
  45.  
  46. $string = new validation_string();
  47. $string->setValidation(array('regex' => '#^[\w]+$#i', 'minlenght' => 4, 'maxlenght' => 6));
  48.  
  49. var_dump($obj->check('jakis tekst', $string)); // bool(false)
  50. var_dump($obj->check('jakisd', $string)); // bool(true)
  51.  
  52. ?>


Dla każdego typu możesz sobie odpowiedni obiekt przekazać w zależności od tego co potrzebujesz sprawdzać.

Ten post edytował fifi209 23.03.2010, 20:32:01
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: 13.10.2025 - 01:02