汎用バリデーションライブラリとして Aura.Filter を使います。
https://github.com/auraphp/Aura.Filter#creating-and-using-custom-rules
Composer でインストール
composer.json
{
"require": {
"aura/filter": "~1.0"
}
}
インストールします。
$ composer install
クロージャを使ったカスタムバリデーション
Aura.Filter でクロージャを使ったカスタムバリデーションを実装します。
Aura\Filter\RuleCollection クラスの setRule
メソッドで、バリデーションルールを設定します。引数は、先頭から順に、対象フィールド名、エラーメッセージ、バリデーションルールとなります。バリデーションルールでは、引数の値がルールに適合すれば true
、それでなければ false
を返します。
values
メソッドで、バリデーションを実行します。全てのルールに適合すれば true
、そうでなければ false
を返します。
aura.php
<?php
require_once __DIR__ . '/vendor/autoload.php';
$filter = (new \Aura\Filter\FilterFactory())->newInstance();
$filter->setRule(
'foo',
'エラー!!',
function($data) {
return $data === 'ok';
}
);
$inputs = [
'foo' => 'ng',
];
if ($filter->values($inputs) !== true) {
print_r($filter->getMessages());
} else {
echo 'valid' . PHP_EOL;
}
実行すると下記のようになります。
$ php aura.php
Array
(
[foo] => Array
(
[0] => エラー!!
)
)