Skip to content

Repository files navigation

Ray.ValidateModule

Scrutinizer Code QualityCode CoverageBuild StatusBuild Status

Installation

Composer install

$ composer require ray/validate-module

Module install

useRay\Di\AbstractModule;
useRay\AuraSqlModule\AuraSqlModule;
useRay\AuraSqlModule\Annotation\AuraSqlConfig;
class AppModule extends AbstractModule
{
protectedfunctionconfigure()
{
$this->install(newValidateModule);
}
}

Usage

Annotate target method with @Valid annotation.

useRay\Validation\Annotation\Valid;
class User
{
/** * @Valid */publicfunctioncreateUser($name)
{
// ...
}

Provide onValidate annotated method in same class for validation. Method can be named freely.

useRay\Validation\Annotation\OnValidate;
// .../** * @OnValidate */publicfunctiononValidate($name)
{
$validation = newValidation;
if (! is_string($name)) {
$validation->addError('name', 'name should be string');
}
return$validation;
}

Validate all parameters in validation method. addError($name, $message) with invalid parameter name and message in the case of validation failed.

Ray\Validation\Exception\InvalidArgumentException thrown on validation failed, But if @OnFailure annoted method exists, The result of @OnFailure method returns instead of original.

useRay\Validation\Annotation\OnFailure;
// .../** * @OnFailure */publicfunctiononFailure(FailureInterface$failure)
{
// original parameterslist($this->defaultName) = $failure->getInvocation()->getArguments();
// errorsforeach ($failure->getMessages() as$name => $messages) {
foreach ($messagesas$message) {
echo"Input '{$name}': {$message}" . PHP_EOL;
}
}
}

If you need multiple validation in one class, You can name validation at annotation property as follows.

useRay\Validation\Annotation\Valid;
useRay\Validation\Annotation\OnValidate;
useRay\Validation\Annotation\OnInvalid;
// .../** * @Valid("foo") */publicfunction fooAction($name, $address, $zip)
{
/** * @OnValidate("foo") */publicfunction onValidateFoo($name, $address, $zip)
{
// .../** * @OnInvalid("foo") */publicfunction onInvalidFoo(FailureInterface$failure)
{
// ...

Demo

$ php docs/demo/run.php
// It works!

About

Validation module for Ray.Di

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages