3. Validation of data with ArrayerValidate - adwins/Arrayer GitHub Wiki

3. Validation of data with ArrayerValidate.

Introduction

Validation of data with ArrayerValidate.

Details

/**
 * Arrayer has an auxiliary class ArrayerValidate to validate data.
 *
 * To use it you have Arrayer::validate() method that provides a tunnel to ArrayerValidate.
 */

$post = new Arrayer;

$post->check('password');

$post->password->validate()->is_empty()->on_true('Empty password');

/**
 * Now we have added an error with error text "Empty password" to $post.
 * We can do some other validations on different variables and then get all errors
 * as an array, each key is a field name, each value is an error text.
 */

$errors = $post->get_errors();

/**
 * For example,
 * $errors = array(
 * 	'password' => 'Empty password',
 * 	'age' => 'Age is outbounding',
 * );
 */

/**
 * You can construct validation queues:
 */

$post->password->validate()
	->is_empty()->on_true('Empty password')
	->md5()->unless($password_etalon, 'Incorrect password');

/**
 * If a value is empty, we log an error, any other validations won't be applied.
 */


/**
 * How to construct validation:
 * Arrayer::validate() returns an ArrayerValidate object expecting an Arrayer method
 * as next chain. The result of that method is hooked up to ArrayerValidate object
 * expecting conditions: `on_true`, `on_false`, `on` or `unless`.
 * After conditions you can add a new validation task to the queue.
 *
 * Conditions:
 *
 * ArrayerValidate::on_true(string $error_text)
 * Error raises when the result of previous method is boolean true.
 *
 * ArrayerValidate::on_false(string $error_text)
 * Error raises when the result of previous method is boolean false.
 *
 * ArrayerValidate::on(mixed $expected_value, string $error_text)
 * Error raises when the result of previous method is equal to expected_value.
 *
 * ArrayerValidate::unless(mixed $expected_value, string $error_text)
 * Error raises when the result of previous method is not equal to expected_value.
 *
 */


/**
 * You can validate several variables ot once:
 */

$post->validate()
	->on_empty('username', 'Name is empty!')
	->on_empty('age', 'Age is empty!')
	->on_empty('country', 'Country is empty!');

/**
 * It is like shortcut to $post->var->validate()->is_empty()->on_true('var is empty');
 */

/**
 * After these quick validations you can proceed next validations if everything is ok
 */

if ($post->validate()->is_ok()){
	$post->age->validate()->in_range(10, 90)->on_false('Age is outbounding');
	// etc.
}

⚠️ **GitHub.com Fallback** ⚠️