Flexible PHP Validation Library: Validate values according to flexible rules

Recommend this page to a friend!
  Info   View files Documentation   View files View files (31)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2020-06-20 (17 days ago) RSS 2.0 feedNot yet rated by the usersTotal: 67 This week: 4All time: 9,675 This week: 61Up
Version License PHP version Categories
php-flexible-validat 1.0.0The PHP License5PHP 5, Validation
Description Author

This package can validate values according to flexible rules.

It can take an associative array of values and a set of rules and validate the values to verify if they comply with the rules.

The package can validate the values according to a given list of common rules, as well validate the values with custom rules implemented by external validation classes.

Currently it supports the following common validation rules:

- Required value to be present
- Email address
- Maximum limit number
- Require other values to also be present
- Optional
- Value between a given range of numbers
- Image
- Same value as another
- Confirmed by another
- Numeric value

  Performance   Level  
Name: Edward Paul is available for providing paid consulting. Contact Edward Paul .
Classes: 7 packages by
Country: Nigeria Nigeria
Age: 29
All time rank: 396530 in Nigeria Nigeria
Week rank: 6 Up3 in Nigeria Nigeria Up
Innovation award
Innovation award
Nominee: 3x

Details

Flexible PHP Validation Class

Latest Version on Packagist Build Status Quality Score Total Downloads

Provides several different approaches to validate your application's incoming data

Installation

You can install the package via composer:

composer require infinitypaul/php-validator

Basic Usage

<?php
    $validator =  new Validator([
                'full_name' => 'Edward Paul',
                'email' => 'infinitypaul@live.com'
            ]);
    
            $validator->setRules([
                'full_name' => ['required'],
                'email' => ['email']
            ]);
    
            if(!$validator->validate()){
                var_dump($validator->getErrors());
            }else {
                var_dump('Passed');
            }
>

Writing The Validation Logic

We pass the field we intend to validate into the Validator class

new Validator([
                'full_name' => 'Edward Paul',
                'email' => 'infinitypaul@live.com'
            ]);

Validation Rules

we pass the desired validation rules into the setRules() method. Again, if the validation fails, the proper response will save in the ErrorBag. If the validation passes, our validate method returns a true statement.

<?php
        $validator->setRules([
                'full_name' => ['required'],
                'email' => ['required','email']
            ]);

Displaying The Validation Errors

So, what if the incoming parameters do not pass the given validation rules? The errors will be able in the getErrors() method like the above

    $validator->getErrors();

Validation Error Check

You may also use the validate() method to quickly check if validation error messages exist. It returns boolean:

    if(!$validator->validate()){
        //There is an error
        var_dump($validator->getErrors());
    }else {
        //No Error
        var_dump('Passed');
   }

Customizing The Error Key

If you can enter full_name as the key to be validated and required is set, your error message comes out in this format full_name is required You can customize the full_name with the setAliases method.

<?php
$validator->setAliases([
           'full_name' => 'Full Name',
           'email' => 'Email Address'
       ]);

Validating Arrays

Validating array doesn't have to be a pain. You may use "dot notation" to validate attributes within an array. For example, if the incoming request contains an array field, you may validate it like so:

$validator =  new Validator([
           'email' => [
               'infinitypaul@live.com',
               ''
           ]
       ]);

$validator->setRules([
           'email' => [
               'required',
               'email'
           ],
       ]);

You may also validate each element of an array. For example, to validate that each e-mail in a given array input field is unique, you may do the following:

$validator =  new Validator([
           'user' => [
              [
                  'firstName' => ''
              ],
               [
                   'firstName' => 'Paul'
               ]
           ],
       ]);

$validator->setRules([
           'user.*.firstName' => [
               'required'
           ]
       ]);

Custom Validation Rules

You may wish to specify some of your own rules. One method of registering custom validation rules is extending the Rule Class

Once the custom rule class has been created, we are ready to define its behavior. A rule object contains two methods: passes and message. The passes method receives the field, value, and data, and should return true or false depending on whether the value is valid or not. The message method should return the validation error message that should be used when validation fails:

use Infinitypaul\Validator\Rules\Rule;

class Uppercase extends Rule
{
//Determine if the validation rule passes
 public function passes($field, $value, $data): bool
    {
       return strtoupper($value) === $value;
    }
//Get the validation error message.
public function message($field): string
    {
        return $field.' Must Be Uppercase';
    }


}

Once the rule has been defined, you may attach it to a validator by passing an instance of the rule object with your other validation rules:

$validator =  new Validator([
           'name' => 'Edward Paul',
       ]);

$validator->setRules([
           'name' => [
               new Uppercase(),
               'max:5'

           ]
       ]);

Available Validation Rules

Below is a list of all available validation rules and their function

Required :

The field under validation must be present in the input data and not empty.

Email :

The field under validation must be formatted as an e-mail address

Max :

The field under validation must be less than or equal to a maximum value

max:20
RequiredWith :

The field under validation must be present and not empty only if all of the other specified fields are present.

  required_with:lastName,middle

Between :

The field under validation must have a size between the given min and max

between:10,20

Optional :

The field under validation may be null. This is particularly useful when validating primitive such as strings and integers that can contain null values.

optional

Image :

The file under validation must be an image (jpeg, png, bmp, gif, svg, or webp), the image tmp_name is what you need to pass to the validator

$validator =  new Validator([
           'picture' => $_FILES['image']['tmp_name'],
       ]);

$validator->setRules([
        'picture' => 'image'
]);
Same :

The given field must match the field under validation.

same:captha
Confirmed :

The field under validation must have a matching field of foo_confirmation. For example, if the field under validation is password, a matching password_confirmation field must be present in the input.

Numeric :

The field under validation must be numeric.

Note

I intend to keep adding more rules to the package but If you have any additional rules you will like me to add to this, you can reach out to me or open an issue in that regard.

How can I thank you?

Why not star the github repo? I'd love the attention! Why not share the link for this repository on Twitter or HackerNews? Spread the word!

Don't forget to follow me on twitter || or on medium

Thanks! Edward Paul.

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Bug & Features

If you have spotted any bugs, or would like to request additional features from the library, please file an issue via the Issue Tracker on the project's Github page: https://github.com/infinitypaul/php-validator/issues.

License

The MIT License (MIT). Please see License File for more information.

  Files folder image Files  
File Role Description
Files folder image.idea (5 files, 1 directory)
Files folder imagesrc (2 files, 2 directories)
Files folder imagetests (1 file)
Accessible without login Plain text file .editorconfig Data Auxiliary data
Accessible without login Plain text file .scrutinizer.yml Data Auxiliary data
Accessible without login Plain text file .styleci.yml Data Auxiliary data
Accessible without login Plain text file .travis.yml Data Auxiliary data
Accessible without login Plain text file CHANGELOG.md Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file CONTRIBUTING.md Data Auxiliary data
Accessible without login Plain text file LICENSE.md Lic. License text
Accessible without login Plain text file phpunit.xml.dist Data Auxiliary data
Accessible without login Plain text file README.md Doc. Read me

  Files folder image Files  /  .idea  
File Role Description
Files folder imagedictionaries (1 file)
  Accessible without login Plain text file misc.xml Data Auxiliary data
  Accessible without login Plain text file modules.xml Data Auxiliary data
  Accessible without login Plain text file php-validator.iml Data Auxiliary data
  Accessible without login Plain text file php.xml Data Auxiliary data
  Accessible without login Plain text file vcs.xml Data Auxiliary data

  Files folder image Files  /  .idea  /  dictionaries  
File Role Description
  Accessible without login Plain text file infinitypaul.xml Data Auxiliary data

  Files folder image Files  /  src  
File Role Description
Files folder imageErrors (1 file)
Files folder imageRules (11 files)
  Plain text file RuleMap.php Class Class source
  Plain text file Validator.php Class Class source

  Files folder image Files  /  src  /  Errors  
File Role Description
  Plain text file ErrorBag.php Class Class source

  Files folder image Files  /  src  /  Rules  
File Role Description
  Plain text file Between.php Class Class source
  Plain text file Confirmed.php Class Class source
  Plain text file Email.php Class Class source
  Plain text file Image.php Class Class source
  Plain text file Max.php Class Class source
  Plain text file Numeric.php Class Class source
  Plain text file Optional.php Class Class source
  Plain text file Required.php Class Class source
  Plain text file RequiredWith.php Class Class source
  Plain text file Rule.php Class Class source
  Plain text file Same.php Class Class source

  Files folder image Files  /  tests  
File Role Description
  Plain text file ExampleTest.php Class Class source

 Version Control Unique User Downloads Download Rankings  
 100%
Total:67
This week:4
All time:9,675
This week:61Up

For more information send a message to info at phpclasses dot org.