目次

バリデーター - Valitron

Version 1.4 (BSD 3-Clause License)

y2sunlight 2020-04-18

定番ライブラリー に戻る

関連記事

リンク

テストプログラムの所在

{Project Folder}\test\valitron\

Valitron について

Webアプリケーションの世界では HTML5jqueryによるクライアントサイドのバリデーション環境が強力になったきたとは言え、はやりサーバーサイドのバリデーションはデータの正確性と完全性を保つ上で必要不可欠な存在(最後の砦)です。バリデーションをPHP言語に標準装備されている関数群だけで自力作成することも難しくはありませんが、やはり必要最低限のものはライブラリとして揃えておきたいものです。

但し、バリデーターが機能を重視する余りに他のパッケージと依存関係の為に付随する大量の追加ファイルを取り込むことは避けたいと思います(これは本編のApricotの思想に反します)。そこで、いろいろ探したところ、Apricotの思いにピッタリのものを見つけました。それが Valitron です。Valitronはとてもシンプルなバリデーターライブラリで、他のパッケージなどとの依存関係もありません。また、その作者がApricotの環境変数ライブラリとして使っているphpdotenvの作者と同じVance Lucas氏であったことも選定理由の1つになりました。実際に使った見ると、本当にシンプルで使いやすく、バリデーションのカスタムルールームも簡単に追加でき、Apricotにとっては将に「水魚の交わり」と言ったところでしょうか。Lucas氏に感謝です。

インストール

composer require vlucas/valitron
Using version ^1.4 for vlucas/valitron
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing vlucas/valitron (v1.4.7): Loading from cache
Writing lock file
Generating autoload files
1 package you are using is looking for funding.
Use the `composer fund` command to find out more!
Note:
Eclipse起動中にパッケージを取得した場合は、プロジェクト・エクスプローラー内の[プロジェクト(apricote)]を右クリックして[リフレッシュ]を選択して下さい。また、新しく取得したパッケージのインテリセンスが有効にならない場合は、プロジェクトのビルトまたはクリーン&ビルドを行ってビルドリストの更新を行って下さい。

パッケージの取得が終わると composer.jsonrequire に以下が追加されます。

composer.json
{
    "require": {
        "vlucas/valitron": "^1.4"
    }
}


テストプログラム

パッケージのテストフォルダ(test\)に、テスト用のコード(valitron.php)を作成します。この例はgithubに記載されているものと同等です。フォームからPostされてくるnameと言う名前のデータにrequired(必須)という名のルールを適用しています。バリデーションのルールをrule()で設定した後は、validate()で検証して、結果がfalseならエラー内容をerrors()で取り出します。

valitron.php
<?php
require __DIR__.'/../vendor/autoload.php';
 
$v = new Valitron\Validator(array('name' => 'Chester Tester'));
$v->rule('required', 'name');
if($v->validate())
{
    echo "Yay! We're all good!";
}
else
{
    // Errors
    print_r($v->errors());
}

実行結果(成功の場合)

Yay! We're all good!

実行結果(失敗の場合)

Array ( [name] => Array ( [0] => Name is required ) )

エラーの場合のメッセージは言語毎に設定できるように配慮されており、バリデーションルールの追加も簡単に出来るようになっています。仔細はのgithubをご覧下さい。尚、お分かりとは思いますが、実際には上例のValidatorをnewする際は以下のようになります。

$v = new Valitron\Validator($_POST);