すばらしいRespect Validation ライブラリには、string()、alpha() などの組み込みバリデータが多数付属しています。自己定義のバリデーターをライブラリーに追加したい、例えば、これができるようにしたい:
Validator::myCustomValidator()->assert( $input );
それほど複雑ではないことを発見しましたが、ライブラリのソースコードを調べて調べる必要があったため、今後の参考のためにこの自己回答の質問をここに投稿します.
すばらしいRespect Validation ライブラリには、string()、alpha() などの組み込みバリデータが多数付属しています。自己定義のバリデーターをライブラリーに追加したい、例えば、これができるようにしたい:
Validator::myCustomValidator()->assert( $input );
それほど複雑ではないことを発見しましたが、ライブラリのソースコードを調べて調べる必要があったため、今後の参考のためにこの自己回答の質問をここに投稿します.
適切な名前空間で検証クラスと付随する例外クラスを定義すると、検証ライブラリは自動的にそれらを使用してデータを検証します。
myCustomValidator.php:
<?php
namespace Respect\Validation\Rules;
class myCustomValidator extends AbstractRule
{
public function validate($input)
{
return true; // Implement actual check here; eg: return is_string($input);
}
}
myCustomValidatorException.php:
<?php
namespace Respect\Validation\Exceptions;
class myCustomValidatorException extends ValidationException
{
public static $defaultTemplates = array(
self::MODE_DEFAULT => array(
self::STANDARD => '{{name}} must ... ', // eg: must be string
),
self::MODE_NEGATIVE => array(
self::STANDARD => '{{name}} must not ... ', // eg: must not be string
)
);
}
これらのファイルがプロジェクトに含まれている限り、動作するValidator::myCustomValidator()->assert( $input );
はずです。
これは明らかに命名規則に依存しているため、必ずクラス名を使用して自己定義バリデーターを呼び出し、設定する必要があります。