Form example - phramework/validate GitHub Wiki

The following example shows how to use the library to validate the form. $formData object data can alternative use php inputs like $_POST superglobal.

<?php

require './vendor/autoload.php';

use \Phramework\Validate\EmailValidator;
use \Phramework\Validate\StringValidator;
use \Phramework\Validate\DateValidator;
use \Phramework\Validate\BooleanValidator;
use \Phramework\Validate\ObjectValidator;
use \Phramework\Validate\UnsignedIntegerValidator;

/**
 * @throws Phramework\Exceptions\MissingParametersException
 * @throws Phramework\Exceptions\IncorrectParametersException
 */
function registrationData()
{
    $validationModel = new ObjectValidator(
        (object) [
            'email'      => new EmailValidator(3, 100),
            'name'       => new StringValidator(3, 100),
            'birth_date' => new DateValidator(),
            'newsletter' => (new BooleanValidator())
                ->setTitle('Receive newsletter')
                ->setDefault(false),
            'frequency'  => (new UnsignedIntegerValidator(1, 7))
                ->setDescription('Emails per day')
                ->setDefault(1)
        ],
        ['email', 'name', 'birth_date'],
        false //additionalProperties
    );

    $formData = (object) [
        'email'      => '[email protected]',
        'name'       => 'Xenofon Spafaridis',
        'birth_date' => '1900-01-01',
        'frequency'  => '4'
    ];

    $value = $validationModel->parse(formData);

    return $value;
}

$value = registrationData();

var_dump($value);

The above example will output:

class stdClass#9 (5) {
  public $email =>
  string(18) "[email protected]"
  public $name =>
  string(18) "Xenofon Spafaridis"
  public $birth_date =>
  string(10) "1991-08-23"
  public $frequency =>
  int(4)
  public $newsletter =>
  bool(false)
}