2017 © Pedro Peláez
 

library validation

validation library

image

volcanus/validation

validation library

  • Tuesday, September 26, 2017
  • by k-holy
  • Repository
  • 2 Watchers
  • 0 Stars
  • 1,331 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 12 Versions
  • 2 % Grown

The README.md

Volcanus Validation

Latest Stable Version Continuous Integration, (*1)

あるオブジェクトのプロパティまたは配列の値に対して、型や文字数、値の大小などの妥当性を検証するためのライブラリです。, (*2)

検証処理自体は独立したクラス(Checker)として実装しており、それなりに稼働実績があります。, (*3)

(実はこのプロジェクトは、それらの検証処理にテストケースを完備するために開始したものです), (*4)

チェッカー(Checker)

ライブラリに同梱されているデフォルトチェッカーは、check() メソッドで与えられた引数を検証し、妥当ではない場合にはVolcanus\Validation\Exception\CheckerExceptionインタフェースを実装した例外をスローします。, (*5)

<?php

    use Volcanus\Validation\Context;
    use Volcanus\Validation\Checker\IntChecker;
    use Volcanus\Validation\Exception\CheckerException;
    use Volcanus\Validation\Exception\CheckerException\IntException;
    use Volcanus\Validation\Exception\CheckerException\MinValueException;
    use Volcanus\Validation\Exception\CheckerException\MaxValueException;

    $checker = new IntChecker();
    try {
        $checker->check('foo', ['min' => 1, 'max' => 10]);
    } catch (IntException $e) {
        die('数値を入力してください');
    } catch (MinValueException $e) {
        die('1以上の数値を入力してください');
    } catch (MaxValueException $e) {
        die('10以下の数値を入力してください');
    }

デフォルトチェッカーは__invoke()メソッドを実装しており、コールバックとして扱うこともできます。, (*6)

<?php

    $checker = new IntChecker();
    try {
        $checker($data['number'], [
            'min' => 1,
            'max' => 10,
        ]);
    } catch (CheckerException $e) {
        die('1から10までの数値を入力してください');
    }

Contextクラス

Contextクラスはチェック対象のオブジェクトまたは配列を保持し、Context::check()メソッドによりプロパティまたは配列のキーを指定してチェックを行えます。, (*7)

<?php

    $validation = new Context([
        'id'   => 10,
        'name' => '',
    ]);
    $validation->check('id'  , 'notEmpty');
    $validation->check('id'  , 'int' , ['min' => 1, 'max' => 10]);
    $validation->check('name', 'notEmpty');
    $validation->check('name', 'maxLength', ['length' => 10]);

検証結果はcheck()メソッドの戻り値から取得できるほか、isValid()メソッドやisError()メソッドで結果をチェックすることもできます。, (*8)

<?php

    if ($validation->isValid()) {
        // 正常時の処理
    } else {
        $errors = [];
        if ($validation->isError('id', 'notEmpty')) {
            $errors[] = 'IDを入力してください';
        }
        if ($validation->isError('id', 'int')) {
            $errors[] = 'IDが不正です';
        }
        if ($validation->isError('name', 'notEmpty')) {
            $errors[] = '名前を入力してください';
        }
        if ($validation->isError('name', 'maxLength')) {
            $errors[] = '名前が長すぎます';
        }
    }

デフォルトチェッカーでは、エラーを検出した場合、その後は同じ項目へのチェックをスルーします。 上記の例だと、name値はnotEmptyチェックでエラーとなり、maxLengthチェックは実行されません。, (*9)

デフォルトチェッカー以外にも、registerChecker()メソッドで独自のチェック処理を登録して利用できます。, (*10)

<?php

    $validation = new Context([
        'id'   => 0,
        'name' => '',
    ]);
    $validation->registerChecker('int', function($value, $options = [])) {
        if (!ctype_digit(strval($value)) ||
            strcmp(strval($value), sprintf('%d', $value)) !== 0
        ) {
            return false;
        }
        if (isset($options[0]) && intval($value) < $options[0]) {
            return false;
        }
        if (isset($options[1]) && intval($value) > $options[1]) {
            return false;
        }
        return true;
    });
    $validation->registerChecker('notEmpty', function($value) {
        return (isset($value) && strlen($value) !== 0);
    });

    $validation->check('id'  , 'int', [1, 10]); // false
    $validation->check('name', 'notEmpty'); // false

対応環境

  • PHP 8.1以降

The Versions

26/09 2017

0.6.x-dev

0.6.9999999.9999999-dev https://github.com/k-holy/volcanus-validation

validation library

  Sources   Download

MIT

The Requires

  • php >=5.3.9

 

The Development Requires

by Avatar k-holy

validation

26/09 2017

0.6.0

0.6.0.0 https://github.com/k-holy/volcanus-validation

validation library

  Sources   Download

MIT

The Requires

  • php >=5.3.9

 

The Development Requires

by Avatar k-holy

validation

06/09 2017

dev-master

9999999-dev https://github.com/k-holy/volcanus-validation

validation library

  Sources   Download

MIT

The Requires

  • php ^5.6||^7.0

 

The Development Requires

by Avatar k-holy

validation

06/09 2017

dev-develop

dev-develop https://github.com/k-holy/volcanus-validation

validation library

  Sources   Download

MIT

The Requires

  • php ^5.6||^7.0

 

The Development Requires

by Avatar k-holy

validation

06/09 2017

1.0.1

1.0.1.0 https://github.com/k-holy/volcanus-validation

validation library

  Sources   Download

MIT

The Requires

  • php ^5.6||^7.0

 

The Development Requires

by Avatar k-holy

validation

05/09 2017

1.0.0

1.0.0.0 https://github.com/k-holy/volcanus-validation

validation library

  Sources   Download

MIT

The Requires

  • php ^5.6||^7.0||^7.1

 

The Development Requires

by Avatar k-holy

validation

24/10 2016

0.5.1

0.5.1.0 https://github.com/k-holy/volcanus-validation

validation library

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Avatar k-holy

validation

16/05 2016

0.5.0

0.5.0.0 https://github.com/k-holy/volcanus-validation

validation library

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Avatar k-holy

validation

17/04 2015

0.4.1

0.4.1.0 https://github.com/k-holy/volcanus-validation

validation library

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

by Avatar k-holy

validation

09/07 2014

0.4.0

0.4.0.0 https://github.com/k-holy/volcanus-validation

validation library

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Avatar k-holy

validation

26/11 2013

0.2.4

0.2.4.0 https://github.com/k-holy/Volcanus_Validation

validation library

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Avatar k-holy

validation

21/10 2013

0.2.3

0.2.3.0 https://github.com/k-holy/Volcanus_Validation

validation library

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

by Avatar k-holy

validation