Usage
<?php
require_once "vendor/autoload.php";
use Webhkp\Pvalidate\Rules\Custom;
use Webhkp\Pvalidate\Rules\Regex;
use Webhkp\Pvalidate\Rules\ValidationRule;
use Webhkp\Pvalidate\Validator;
use Webhkp\Pvalidate\Rules\Required;
use Webhkp\Pvalidate\Rules\Range;
use Webhkp\Pvalidate\Rules\Allow;
use Webhkp\Pvalidate\Rules\Disallow;
class MyClass {
public function __construct(
#[Required]
public string $name
) {
}
#[Required]
public string $address;
#[Required]
public string $description;
#[Range(min: 50, max: 60)]
const AGE = 40;
#[Range(min: 50)]
public int $prop1 = 40;
#[Range(max: 10)]
#[Disallow([1, 2, 3, 40])]
public int $prop2 = 40;
#[Range()]
#[Allow([1, 2, 3, 40])]
public int $prop3 = 40;
#[Required]
public array $myArr = [];
#[Regex('/[A-Z0-9]+/')]
public string $regexTestField = 'AB23DE';
#[MyCustomPasswordRule(100)]
public string $password = 'mysimplepass';
}
// Usage
$myObj = new MyClass("Test ABC");
$myObj->description = "Some desc string for testing";
$validationResponse = Validator::validate($myObj);
var_dump($validationResponse->isValid());
var_dump($validationResponse->getErrors());
var_dump($validationResponse->getResult());
var_dump($validationResponse->getMessages());
// Check required validation
// $requiredValidation = new Required();
try {
$requiredValidationResult = (new Required)->parse(null);
var_dump($requiredValidationResult->isValid());
var_dump($requiredValidationResult->getErrors());
} catch (\Exception $e) {
var_dump($e);
}
// Check password validation
$passwordRule = new MyCustomPasswordRule(10);
$passValidationResult = $passwordRule->parse('simplepass');
var_dump($passValidationResult->isValid());
var_dump($passValidationResult->getErrors());
// Regex validation
$regexRule = new Regex('/^[A-Z0-9]{3}.*/');
$regexResult = $regexRule->safeParse('D2ab');
var_dump($regexResult->isValid());
var_dump($regexResult->getErrors());
Output:
bool(false)
array(3) {
["address"]=>
array(1) {
["required"]=>
string(19) "address is Required"
}
["prop1"]=>
array(1) {
["min"]=>
string(42) "prop1 should be larger than or equal to 50"
}
["prop2"]=>
array(1) {
["max"]=>
string(43) "prop2 should be smaller than or equal to 10"
}
}