Validator

Subsystém validátorů byl ve starších verzích PHP Jet pevnou součástí subsytému formulářů. Jak je zjevné podle názvu, tak slouží k validaci hodnot, ale na rozdíl od předchozí implementace v rámci formulářů je již plně samostatně použitelný, ale z hlediska architektury a logiky použití je subsystém validátorů formulářům velice podobný. Technicky vzato byla validace ze subsystému formulářů plně odstraněna a transformována v tento samostatně použitelný subsystém.

Základní přehled funkcí a možností validátorů

  • Otevřený, rozšířitelný a modifikovatelný modulární subsystém (jako vše v PHP Jet :-) )
  • Velká sada již připravených validátorů.
  • Možnost přetěžovat připravené validátory pomocí továren.
  • Možnost vytvářet libovolné vlastní validátory.
  • Možnost namapovat validátory na libovolnou entitu (třídu) pomocí definic stejně jako ORM či subsystému formulářů.

Stručná ukázka použití.

Základní obecné použití

$tested_value '#FFC6C6';

$validator Factory_Validator::getValidatorInstanceValidator::TYPE_COLOR );
$validator->setIsRequiredtrue );
if(
$validator->validate$tested_value )) {
    echo 
'Value is valid';
} else {
    echo 
'Value is NOT valid';
    
    echo 
$validator->getLastErrorMessage();
}

Namapování validátoru přeímo na entitu - třídu

namespace JetApplication;

use 
Jet\BaseObject;
use 
Jet\Entity_Validator_Definition;
use 
Jet\Entity_Validator_Interface;
use 
Jet\Entity_Validator_Trait;
use 
Jet\Validator;
use 
Jet\Validator_Int;


class 
ExapleEntity extends BaseObject implements Entity_Validator_Interface
{
    
    use 
Entity_Validator_Trait;

    #[
Entity_Validator_Definition(
        
typeValidator::TYPE_INT,
        
min_value10,
        
max_value999,
        
error_messages: [
            
Validator_Int::ERROR_CODE_OUT_OF_RANGE => 'Number is out of range (0-999)'
        
]
    )]
    protected 
int $int_property 0;
    
    public function 
getIntProperty(): int
    
{
        return 
$this->int_property;
    }
    
    public function 
setIntPropertyint $int_property ): void
    
{
        
$this->int_property $int_property;
    }
    
}

$object = new ExapleEntity();
$object->setIntProperty10000 );

$validator $object->createValidator();
if(
$validator->validate()) {
    echo 
"OK - object is valid";
} else {
    echo 
"Object is not valid<br><br>";
    
    foreach( 
$validator->getErrors() as $property_path=>$validation_errors ) {
        foreach( 
$validation_errors as $validation_error ) {
            echo 
$property_path.': '.$validation_error->getMessage().'<br>';
        }
    }
}
Předchozí kapitola
InputCatcher
Další kapitola
Formuláře