Thanks very much buddy ๐
Waiting for tips I made quite the same
think:
<?php
error_reporting(E_ALL | E_STRICT);
define("IS_REQUIRED", 'The following (required) field is empty : %s') ;
define('NOT_NUM', 'The following field isn\'t a number: %s') ;
class InvalidArgException extends Exception{
public function __construct($message, $code = 0){
parent::__construct($message, $code);
}
public function __toString(){
return " ".__CLASS__ . "<br /> Line : <b>[{$this->line}]</b><br /> Code :<b>[{$this->code}]</b><br /> Msg : {$this->message}<br /> File : <b>{$this->file}</b>\n";
}
}
abstract class ValidatorFactory{
private static $errors= array();
public static function createValidator($validator,$field,$value){
if(!class_exists($validator)){
throw new InvalidArgException("Invalid object parameters class {$validator} doesn't exist in class <b>[".__CLASS__."]</b>");
}
$validator= new $validator($field,$value);
if(!$validator->validate()){
self::$errors[]= $validator->getErrors();
}
}
public static function isValid(){
return !(bool)count(self::$errors);
}
public static function getValidators(){
return self::$errors;
}
}
abstract class AbstractValidator{
protected $error= '';
abstract protected function validate();
abstract protected function setError($msg);
public function getErrors(){
return $this->error;
}
}//
class IsEmpty extends AbstractValidator{
private $value= '';
private $field= '';
public function __construct($field,$value){
$this->field= $field;
$this->value= $value;
}
public function validate(){
$isValid= TRUE;
if(empty($this->value))
{
$isValid= FALSE;
$this->setError(sprintf(IS_REQUIRED, $this->field));
}
return $isValid;
}
public function setError($msg){
$this->error= $msg;
}
}//
class IsNumeric extends AbstractValidator{
private $value= '';
private $field= '';
public function __construct($field,$value){
$this->field= $field;
$this->value= $value;
}
public function validate(){
$isValid= TRUE;
if(!is_numeric($this->value))
{
$isValid= FALSE;
$this->setError(sprintf(NOT_NUM, $this->field));
}
return $isValid;
}
public function setError($msg){
$this->error= $msg;
}
}//
try{
ValidatorFactory::createValidator('IsEmpty','Username','');
ValidatorFactory::createValidator('IsEmpty','Username2','');
ValidatorFactory::createValidator('IsNumeric','Age','xxx');
if(!ValidatorFactory::isValid()){
foreach(ValidatorFactory::getValidators() as $err){
echo $err."<br />";
}
exit();
}
else{
// insert data
}
}
catch(InvalidArgException $e){
echo $e;
exit();
}
?>
But all in all I prefer your code ๐
Bye.