Inapoi la clase
Acum ca stii cate ceva despre verificarea datelor, ar trebui sa-ti fie destul de clar ca te vei lovi de acest lucru destul de des. In concluzie, poate fi util sa iti creezi o serii de functii pentru validari, pe care sa le poti refolosi in functie de situatie. In continuare vom face intocmai acest lucru – vom crea o clasa cu metode pentru verificarea informatiilor si manipularea erorilor, apoi vom utiliza aceasta clasa pentru a valida un formular.
Iata definitia clasei class.formValidator.php in PHP 5. Pentru a o adapta la PHP 4 trebuie sa stergi specificatorii de acces public si privat din definitia functiilor si sa inlocuiesti specificatorul privat cu var pentru membrul errorList. Restul scriptului va rula la fel indiferent de versiunea PHP.
<?php
class formValidator {
private $_errorList;
public function __construct() {
$this->resetErrorList();
}
private function resetErrorList() {
$this->_errorList = array();
}
public function isEmpty($value) {
return (!isset($value) || trim($value) == '') ? true : false;
}
public function isString($value) {
return is_string($value);
}
public function isNumber($value) {
return is_numeric($value);
}
public function isInteger($value) {
return (intval($value) == $value) ? true : false;
}
public function isAlpha($value) {
return preg_match('/^[a-zA-Z]+$/', $value);
}
public function isWithinRange($value, $min, $max) {
return (is_numeric($value) && $value >= $min && $value <= $max) ? true : false;
}
public function isEmailAddress($value) {
return eregi('^([a-z0-9])+([\.a-z0-9_-])*@([a-z0-9_-])+(\.[a-z0-9_-]+)*\.([a-z]{2,6})$', $value);
}
public function isInArray($array, $value) {
return in_array($value, $array);
}
public function addError($field, $message) {
$this->_errorList[] = array('field' => $field, 'message' => $message);
}
public function isError() {
return (sizeof($this->_errorList) > 0) ? true : false;
}
public function getErrorList() {
return $this->_errorList;
}
public function __destruct() {
unset($this->_errorList);
}
}
?>
Dupa cum poti vedea, clasa formValidator este alcatuita din doua tipuri de functii.
Primul tip este reprezentat de o serie de metode care accepta date pentru a fi validate si returneaza o valoare booleana. Aceste metode sunt:
- isEmpty() – verifica daca input-ul este un sir vid de caractere
- isString() - verifica daca input-ul este un sir de caractere
- isNumber() - verifica daca input-ul este o valoare numerica
- isInteger() - verifica daca input-ul este un numar intreg
- isAlpha() - verifica daca input-ul este alfanumeric
- isEmailAddress() - verifica daca input-ul este o adresa de email
- isWithinRange() - verifica daca input-ul este un numar dintr-un interval dat
- isInArray() – verifica daca o valoare exista intr-un vector
In mod evident, lista de mai sus poate fi completata si cu alte metode, in functie de necesitatile fiecaruia.
In celelalte tutoriale de PHP din cadrul aceleiasi serii, o eroare intalnita determina intreruperea executiei scriptului prin apelul functiei die(). Intr-o aplicatie reala, astfel de terminari abrupte nu sunt o idee prea buna; in schimb, datele introduse de utilizator sunt procesate in continuare, iar la final, sunt afisate toate erorile intalnite.
Aici intervine cea de-a doua componenta a clasei formValidator: un array ce memoreaza toate erorile generate de catre procesul de validare. In plus, acest vector este insotit de o serie de metode ce au ca scop afisarea sau manipularea elementelor sale:
- isError() – verifica daca exista vreo eroare in lista
- addError() – adauga eroare in lista
- getErrorList() – returneaza lista curenta de erori
- resetErrorList() – reseteaza lista
In acest moment, e posibil sa gasesti toate aceste metode putin confuze. In continuare poti vedea un exemplu concret care are rolul de a clarifica putin lucrurile. In primul, avem un formular HTML standard:
<html>
<head></head>
<body>
<b>Campurile marcate cu * sunt obligatorii.</b>
<form action = 'processor.php' method = 'post'>
<b>Nume*:</b>
<br />
<input type = 'text' name = 'name' size = '15'>
<p />
<b>Varsta*:</b>
<br />
<input type = 'text' name = 'age' size = '2' maxlength = '2'>
<p />
<b>Email*:</b>
<br />
<input type = 'text' name = 'email' size = '30'>
<p />
<b>Sex*:</b>
<br />
<input type = 'radio' name = 'sex' value = 'm'>M
<input type = 'radio' name = 'sex' value = 'f'>F
<p />
<b>Culoarea preferata*:</b>
<br />
<select name = 'color'>
<option value = ''>-alege o culoare-</option>
<option value = 'r'>Rosu</option>
<option value = 'g'>Verde</option>
<option value = 'b'>Albastru</option>
<option value = 's'>Argintiu</option>
</select>
<p />
<b>Asigurare*:</b>
<br />
<select name = 'insurance'>
<option value = ''>-select one-</option>
<option value = '1'>Basic</option>
<option value = '2'>Extinsa</option>
<option value = '3'>Premium</option>
</select>
<p />
<b>Alte optiuni:</b>
<br />
<input type = 'checkbox' name = 'options[]' value = 'PSTR'>Servodirectie
<input type = 'checkbox' name = 'options[]' value = 'AC'>Aer conditionat
<input type = 'checkbox' name = 'options[]' value = '4WD'>Tranctiune pe 4 roti
<input type = 'checkbox' name = 'options[]' value = 'SR'>Geamuri electrice
<input type = 'checkbox' name = 'options[]' value = 'LUP'>Interior din piele
<p />
<input type = 'submit' name = 'submit' value = 'Save'>
</form>
</body>
</html>
|