3

すばらしいRespect Validation ライブラリには、string()、alpha() などの組み込みバリデータが多数付属しています。自己定義のバリデーターをライブラリーに追加したい、例えば、これができるようにしたい:

Validator::myCustomValidator()->assert( $input );

それほど複雑ではないことを発見しましたが、ライブラリのソースコードを調べて調べる必要があったため、今後の参考のためにこの自己回答の質問をここに投稿します.

4

1 に答える 1

4

適切な名前空間で検証クラスと付随する例外クラスを定義すると、検証ライブラリは自動的にそれらを使用してデータを検証します。

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 );はずです。

これは明らかに命名規則に依存しているため、必ずクラス名を使用して自己定義バリデーターを呼び出し、設定する必要があります。

于 2014-10-08T17:30:31.157 に答える