Skip to content

Latest commit

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Igni logoBuild Status

Igni Validation

Licensed under MIT License.

Igni validation is simple, lightweight and extensible validation library.

Installation

composer install igniphp/validation

Introduction

Basic example

<?phpuseIgni\Validation\Assertion;
$numberValidator = Assertion::number($min = 0);
$numberValidator->validate(1);// true$numberValidator->validate(-1);// false$numberValidator->validate(1.0);// true$numberValidator->validate('a'); // false

Getting error information

Allows to validate complex arrays

<?phpuseIgni\Validation\Assertion;
useIgni\Validation\Error;
$userValidator = Assertion::group([
'name' => Assertion::alnum(),
'age' => Assertion::number(1, 200),
'email' => Assertion::email(),
'address' => Assertion::text(),
]);
$userValidator->validate([
'name' => 'John',
'age' => 233,
'email' => 'johnmail',
]);// false$errors = $userValidator->getErrors();
$errors[0] instanceofError\OutOfRangeError;// true$errors[0]->getContext()->getName();//age$errors[1] instanceofError\EmptyValueError;// true$errors[1]->getContext()->getName();//address// Exception can also be factored out of failure instancethrow$errors[0]->toException();

API

Validation list

Assertion::alnum(int $min = null, int $max = null)

Creates validator that checks if passed value contains only digits and letters.

Parameters

  • $min defines minimum length
  • $max defines maximum length

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::alnum($minLength = 2);
var_dump($validator->validate('a1')); // true

Assertion::alpha(int $min = null, int $max = null)

Creates validator that checks if passed value contains only letters.

Parameters

  • $min defines minimum length
  • $max defines maximum length

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::alpha($minLength = 2);
var_dump($validator->validate('aaa')); // true

Assertion::boolean()

Creates validator that checks if passed value is valid boolean expression.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::boolean();
var_dump($validator->validate(false)); // true

Assertion::chain(Rule ...$rules)

Creates validator that uses other validators to perform multiple validations on passed value.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::chain(Assertion::text(), Assertion::date());
var_dump($validator->validate('2018-09-10')); // true

Assertion::contains(string $value)

Creates validator that checks if passed string is contained in the validated string.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::contains('example');
var_dump($validator->validate('Test example')); // true

Assertion::date(string $format = null, $min = null, $max = null)

Creates validator that checks if passed value is valid date.

Parameters

  • $format restricts format of passed value
  • $min defines minimum date range
  • $max defines maximum date range

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::date('Y-m-d');
var_dump($validator->validate('2018-09-10')); // true

Assertion::email()

Creates validator that checks if passed value is valid email address.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::email();
var_dump($validator->validate('test@test.com')); // true

Assertion::each(Validator $validator)

Creates validator that checks if each item in passed set can be successfully validated against $validator.

Parameters

  • $validator validator used for each item of the passed set.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::each(Assertion::date('Y-m-d'));
var_dump($validator->validate(['2019-01-01', '2018-10-11'])); // true

Assertion::falsy()

Creates validator that checks if passed value is valid falsy expression;

  • off
  • no
  • false
  • 0

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::falsy();
var_dump($validator->validate('no')); // true

Assertion::group(array $validatorsHash)

Creates validator with key/value hash that validates other hashes.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::group([
'email' => Assertion::email(),
'password' => Assertion::text(),
'date_of_birth' => Assertion::date('Y-m-d'),
]);
var_dump($validator->validate([
'email' => 'test@domain.com',
'password' => 'secret',
'date_of_birth' => '2019-01-01',
])); // true

Assertion::regex(string $pattern)

Creates validator that checks if passed string matches the pattern.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::regex('^-[a-z]+$');
var_dump($validator->validate('-aa')); // true

Assertion::truthy()

Creates validator that checks if passed value is valid truthy expression;

  • on
  • true
  • 1
  • yes

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::truthy();
var_dump($validator->validate('yes')); // true

Assertion::text(int $minLength = null, int $maxLength = null)

Creates validator that checks if passed value is string.

Parameters

  • $minLength defines minimum length
  • $maxLength defines maximum length

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::text($minLength = 2);
var_dump($validator->validate('aaa')); // true

Assertion::in(...$values)

Creates validator that checks if passed value exists in defined list of values.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::in('no', 'yes', 'test');
var_dump($validator->validate('no')); // true

Assertion::integer(int $min = null, int $max = null)

Creates validator that checks if passed value is valid integer expression.

Parameters

  • $min defines minimum value
  • $max defines maximum value

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::integer(10, 100);
var_dump($validator->validate(11)); // true

Assertion::ip()

Creates validator that checks if passed value is valid ip address.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::ip();
var_dump($validator->validate('123.123.123.123')); // true

Assertion::ipv4()

Creates validator that checks if passed value is valid ip v4 address.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::ipv4();
var_dump($validator->validate('123.123.123.123')); // true

Assertion::ipv6()

Creates validator that checks if passed value is valid ip v6 address.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::ipv6();
var_dump($validator->validate('2001:0db8:85a3:0000:0000:8a2e:0370:7334')); // true

Assertion::number(int $min = null, int $max = null)

Creates validator that checks if passed value is valid number expression.

Parameters

  • $min defines minimum value
  • $max defines maximum value

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::number(10, 100);
var_dump($validator->validate('11.2')); // true

Assertion::uuid()

Creates validator that checks if passed value is valid uuid.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::uuid();
var_dump($validator->validate('1ff60619-81cc-4d8e-88ac-a3ae36a97dce')); // true

Assertion::uri()

Creates validator that checks if passed value is valid uri string.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::uri();
var_dump($validator->validate('/some/uri')); // true

Assertion::url()

Creates validator that checks if passed value is valid url string.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::uri();
var_dump($validator->validate('http://domain.com/some/uri')); // true

Assertion::text()

Creates validator that accepts every non empty string.

Assertion::group(array $validators)

Creates validator that validates passed value by group of defined validators.

Example

<?phpuseIgni\Validation\Assertion;
$validator = Assertion::group([
'name' => Assertion::text(),
'age' => Assertion::integer(1, 200),
'email' => Assertion::email(),
]);
var_dump($validator->validate(['name' => 'John Doe', 'age' => 29, 'email' => 'john@gmail.com'])); // true

Creating custom validator

To create custom validator we have to simply extend \Igni\Validation\Assertion class, please consider following example:

<?phpdeclare(strict_types=1);
useIgni\Validation\Assertion;
class ValidateIn extends Assertion
{
publicfunction__construct(...$values)
{
$this->attributes['valid_values'] = $values;
}
protectedfunctionassert($input): bool
{
returnin_array($input, $this->attributes['valid_values'], $strict = true);
}
}

That's all folks!

About

Validation library for igni framework

Topics

Resources

Stars

6 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages