Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Własny validator
aras785
post
Post #1





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


Witam. Zacząłem pisać sobie własny validator danych oto co mam póki co:
  1. <?php
  2. class Validator {
  3. public function __construct($data,$validators) {
  4. foreach($data as $data_key=>$data_value) {
  5. if(array_key_exists($data_key, $validators)) {
  6. if(method_exists($this, $validators[$data_key])) {
  7. if($this->{$validators[$data_key]}($data_value)) {
  8. return true;
  9. }else return false;
  10. }
  11. }
  12. }
  13. }
  14. public function isInt($var) {
  15. if(is_int($var)) {
  16. return true;
  17. }else return false;
  18. }
  19. }
  20.  
  21. $dane = array('wiek'=>2);
  22. $validacja = array('wiek'=>'isInt');
  23.  
  24. if(new Validator($dane,$validacja)) echo 'ok';else echo 'Blad';

Póki co jest prosta zasada ale nie wiem dlaczego w ostatniej linijce gdy sprawdzam if(new Valid...) to zawsze pokazuje 'ok'... Szukam błędu ale niestety nie widzę. Proszę o podpowiedzi. Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
aras785
post
Post #2





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


Macie rację lecz chciałem po prostu nauczyć się czegoś. Zend ma fajne rozwiązanie lecz nie potrafię wydobyć je z samego frameworka.

Szybka modyfikacja (brzydki kod - a wszczegolnosci umiejscowienie komunikatow)
  1. <?php
  2. class Validator {
  3. public $errors=array();
  4. public function isValid($data,$validators) {
  5. foreach($data as $data_key=>$data_value) {
  6. if(array_key_exists($data_key, $validators)) {
  7. if(method_exists($this, $validators[$data_key])) {
  8. if(!$this->{$validators[$data_key]}($data_value)) {
  9. $this->errors[$data_key] = $this->komunikat($validators[$data_key]);
  10. }
  11. }
  12. }
  13. }
  14. if(count($this->errors)==0) return true;
  15. return false;
  16. }
  17. public function isInt($var) {
  18. if(is_numeric($var)) {
  19. return true;
  20. }else return false;
  21. }
  22. public function komunikat($valide) {
  23. $lang = array(
  24. 'isInt'=>'To musi byc liczba'
  25. );
  26. return $lang[$valide];
  27. }
  28. public function getErrors() {
  29. return $this->errors;
  30. }
  31. }
  32. $dane = array('wiek'=>'asd');
  33. $validacja = array('wiek'=>'isInt');
  34.  
  35. $valid = new Validator;
  36. if($valid->isValid($dane,$validacja)) echo 'ok';else print_r($valid->getErrors());


Pozdrawiam:)
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: 5.10.2025 - 19:45