====== バリデーター - Valitron ====== Version 1.4 ([[https://github.com/vlucas/valitron/blob/master/LICENSE.txt|BSD 3-Clause License]]) --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-04-18// [[basic-library:top|定番ライブラリー に戻る]] 関連記事 * [[basic-library:project|プロジェクトの作成 - Apricot (α版)]] * [[basic-library:phpdotenv:4.1|環境変数 - phpdotenv]] * [[basic-library:monolog:2.0|ログ出力 - monolog]] * [[basic-library:idiorm:1.5|ORマッパー - Idiorm]] * [[basic-library:bladeone:3.37|テンプレートエンジン - BladeOne]] * [[basic-library:fast-route:1.3|リクエストルーター - FastRoute]] * [[basic-library:league-container:3.3|DIコンテナー - League/Container]] * バリデーター - Valitron * [[basic-library:whoops:2.7|エラーハンドラー - Whoops]] * [[basic-library:php-debugbar:1.16|デバッグ出力 - php-debugbar]] リンク * https://github.com/vlucas/valitron --- Valitron の本家 テストプログラムの所在 {Project Folder}\test\valitron\ ---- ===== Valitron について ===== Webアプリケーションの世界では [[https://developer.mozilla.org/ja/docs/Learn/HTML/Forms/Form_validation|HTML5]]や[[https://jqueryvalidation.org/|jquery]]によるクライアントサイドのバリデーション環境が強力になったきたとは言え、はやりサーバーサイドのバリデーションはデータの正確性と完全性を保つ上で必要不可欠な存在(最後の砦)です。バリデーションをPHP言語に標準装備されている関数群だけで自力作成することも難しくはありませんが、やはり必要最低限のものはライブラリとして揃えておきたいものです。 但し、バリデーターが機能を重視する余りに他のパッケージと依存関係の為に付随する大量の追加ファイルを取り込むことは避けたいと思います(これは本編のApricotの思想に反します)。そこで、いろいろ探したところ、Apricotの思いにピッタリのものを見つけました。それが ''Valitron'' です。Valitronはとてもシンプルなバリデーターライブラリで、他のパッケージなどとの依存関係もありません。また、その作者がApricotの環境変数ライブラリとして使っている[[https://github.com/vlucas/phpdotenv|phpdotenv]]の作者と同じ[[https://vancelucas.com/|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()で取り出します。 '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 ) ) エラーの場合のメッセージは言語毎に設定できるように配慮されており、バリデーションルールの追加も簡単に出来るようになっています。仔細はの[[https://github.com/vlucas/valitron|github]]をご覧下さい。尚、お分かりとは思いますが、実際には上例のValidatorをnewする際は以下のようになります。 $v = new Valitron\Validator($_POST); \\