psecio/validation

A simple little validation library

0.5.5 2018-08-18 13:31 UTC

This package is auto-updated.

Last update: 2024-04-15 09:59:30 UTC


README

This library seeks to be a simple and reusable validation library for input based on rules.

Example

<?php

$v = \Psecio\Validate\Validator::getInstance();

$data = [
    'foo' => 'bar'
];
$rules = [
    'foo' => 'required|alpha'
];

$result = $v->execute($rules, $data);
var_export($result);

?>

Messages

You can also define custom messages for the failures using the third $messages parameter on the execute method. The key names on the array match to the value name + check type. For example:

<?php
$v = \Psecio\Validate\Validator::getInstance();
$data = [
    'foo' => 'bar'
];
$rules = [
    'foo' => 'required|alpha'
];
$messages = [
	'foo' => ['alpha' => 'This is a custom message']
];

$result = $v->execute($rules, $data, $messages);
var_export($result);

In the example above, we define a custom message for the alpha check on the foo value. If that check were to fail, the error message output would be the new custom message instead of the default.

Getting Errors

There are two method available to get the errors when the result of the execute method is false:

  • The errors method that will return a nested key/value set of failure messages (top level is the value name with each check failure message under it)
  • The errorArray method that will return a flattended set of messages useful for output to a page without requiring too much looping

Checks

Here is a listing of the check types that Validation supports:

alpha

Checks for only alpha characters

alphanum

Checks for only alpha-numeric characters

numeric

Checks to ensure the value provided is numeric (integer, float, etc)

integer

Checks for integer-only values. Can also include minimum and maximum values:

// Minimum of 1, max of 10
$rules = ['mynumber' => 'integer[1,10]'];

boolean

Checks for boolean values (true, false, 0, 1 and strings '0', '1')

array

Checks to ensure the value provided is an array

length

Checks the value to ensure the (string) length matches requirements. You must provide a minimum value, but a maximum can also be defined

// Using just the minimum, checking for a length of at least 3
$rules = ['mystring' => 'length[3]']

// Using both minimum and maximum, check for a length between 3 and 10
$rules = ['mystring' => 'length[3,10]']

date

Checks to be sure the value given is a date (as parsed by strtotime)

before

Checks to see if the value (a parseable date) is before the date provided (as parsed by strtotime)

// Check to see if the date provided is before yesterday
$rules = [
    'myinputdate' => 'before[yesterday]'
];

after

Checks to see if the value (a parseable date) is after the date provided (as parsed by strtotime)

// Check to see if the date is in the last three days
$rules = [
    'myinputdate' => 'after[-3 days]'
];

in

Checks to ensure the value provided is in a set of values

// Check to see if the value is one of "foo", "bar" or "baz"
$rules = [
    'myvalue' => 'in[foo,bar,baz]'
]

json

Checks to be sure the value is a valid JSON formatted string (using json_decode)

required

Checks to be sure the value exists

ip

Checks to ensure the value provided is a valid IPv4 or IPv6 formatted address

email

Check to ensure the value provided is a validly formatted email address

regex

Check to ensure the value matches a certain regular expression at least once

$rules = [
    'mystring' => 'regex[/[0-9a-z]+/]'
]

equals

This check can be used to see if the values of two fields match exactly.

$data = [
    'foo' => 'test1',
    'bar' => 'test1'
];
$rules = [
    'bar' => 'equals[foo]'
];

callback

This check can be used to call custom logic via a static class method. For example, if your class is:

<?php
class Foo {
	public static function check($input) { ... }
}
?>

Then your rule would look something like this:

$rules = [
	'mystring' => 'callback[Foo::check]'
];

And the check method should return a boolean result.