Ciao.
Da un articolo di Fabio Sutto ho eleborato questa bozza di codice:
Codice PHP:
<?php
error_reporting(E_ALL | E_STRICT);
define("IS_REQUIRED", '"%s" è un campo obbligatorio') ;
define('NOT_NUM', '"%s" non contiene un numero valido') ;
class ValidatorFactory{
public function createValidator($validator,$field,$value){
if(!class_exists($validator)){
throw new Exception('Invalid object parameters');
}
return new $validator($field,$value);
}
}
abstract class AbstractValidator{
public static $error= array();
abstract function validate();
public function setError($msg){
self::$error[]= $msg;
}
public static function getErrors(){
return self::$error;
}
public static function getError(){
return array_shift(self::$error);
}
public static function isValid(){
return !(bool)count(self::$error) ;
}
}//
class IsEmpty extends AbstractValidator{
private $value= '';
private $field= '';
public function __construct($field,$value){
$this->field= $field;
$this->value= $value;
}
public function validate(){
if(empty($this->value)){
parent::setError(sprintf(IS_REQUIRED, $this->field));
}
}
}//
class IsNumeric extends AbstractValidator{
private $value= '';
private $field= '';
public function __construct($field,$value){
$this->field= $field;
$this->value= $value;
}
public function validate(){
if(!is_numeric($this->value)){
parent::setError(sprintf(NOT_NUM, $this->field));
}
}
}//
try{
$valFactory=new ValidatorFactory();
$valFactory->createValidator('IsEmpty','Username','')->validate();
$valFactory->createValidator('IsNumeric','Age','xxx')->validate();
if(AbstractValidator::isValid()){
//insert data
}
else{
foreach(AbstractValidator::getErrors() as $error)
{
echo "
".$error."</p>";
}
}
}
catch(Exception $e){
echo $e->getMessage();
exit();
}
?>
Che ne pensate suggerimenti ?