https://github.com/dsheiko/validate
Extendable PHP validation library for testing complex types against a contract
https://github.com/dsheiko/validate
Last synced: 9 months ago
JSON representation
Extendable PHP validation library for testing complex types against a contract
- Host: GitHub
- URL: https://github.com/dsheiko/validate
- Owner: dsheiko
- Created: 2017-12-08T11:22:16.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-02-07T17:06:33.000Z (about 8 years ago)
- Last Synced: 2025-04-19T08:15:48.607Z (11 months ago)
- Language: PHP
- Homepage:
- Size: 45.9 KB
- Stars: 15
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
- my-awesome-list - validate - Extendable PHP validation library for testing complex types against a contract (Programming Languages / PHP)
README
# Dsheiko\Validate
[](https://packagist.org/packages/dsheiko/validate)
[](https://packagist.org/packages/dsheiko/validate)
[](https://packagist.org/packages/dsheiko/validate)
[](https://travis-ci.org/dsheiko/validate)
Extendable validation library for testing primitive and complex types (including key-value arrays) against a contract
* [Installation](#installation)
* [Usage](#usage)
## Installation
Require as a composer dependency:
``` bash
composer require "dsheiko/validate"
```
## Highlights
- Validators are dead simple to extend
- It's really easy to validate precondition/postcondition contracts
- Validator assertions are directly accessible
- Validation of nested arrays
## Usage
- [Basic Usage](./wiki/basic-usage.md)
- [Provided Validators](./wiki/validators.md)
- [Validator Chain](./wiki/validator-chain.md)
- [Validation by Contract](./wiki/validation-by-contract.md)
- [Map Validation](./wiki/map-validation.md)
- [Custom Validators](./wiki/validator-interface.md)
## Examples
### Design by Contract
```php
[ $email, "IsEmailAddress" ],
"password" => [ $password, [ "IsString"=> [ "minLength" => 6, "maxLength" => 32, "notEmpty" => true ] ] ],
]);
// do login
}
```
may throw
- `Dsheiko\Validate\IsString\Exception`
- `Dsheiko\Validate\IsString\minLength\Exception`
- `Dsheiko\Validate\IsString\maxLength\Exception`
- `Dsheiko\Validate\IsEmail\Exception`
with a message like
- `Parameter "email" validation failed: "jon#snow.i.." is not a valid email address`
- `Parameter "password" validation failed: "123" is too short; must be more than 6 chars`
### Map Validation
```php
"jon#snow.io",
"password" => "******",
];
Validate::map($params, [
"email" => ["mandatory", "IsEmailAddress"],
"password" => ["mandatory", "IsString" => ["minLength" => 6, "maxLength" => 128]],
"rememberMe" => ["optional", "IsBool" ],
]);
```
Exception messages look like:
- `Property "email" validation failed: "jon#snow.i.." is not a valid email address`