Version 1.4 (BSD 3-Clause License)
— y2sunlight 2020-04-18
関連記事
リンク
テストプログラムの所在
{Project Folder}\test\valitron\
Webアプリケーションの世界では HTML5やjqueryによるクライアントサイドのバリデーション環境が強力になったきたとは言え、はやりサーバーサイドのバリデーションはデータの正確性と完全性を保つ上で必要不可欠な存在(最後の砦)です。バリデーションを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.json
の require
に以下が追加されます。
{ "require": { "vlucas/valitron": "^1.4" } }
パッケージのテストフォルダ(test\)に、テスト用のコード(valitron.php)を作成します。この例はgithubに記載されているものと同等です。フォームからPostされてくるname
と言う名前のデータにrequired
(必須)という名のルールを適用しています。バリデーションのルールをrule()で設定した後は、validate()で検証して、結果がfalseならエラー内容をerrors()で取り出します。
<?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);