コールバック Zend_Validate_Callback は 与えられた値に対してバリデートを行うコールバックを供給することができます。 Zend_Validate_Callback にてサポートされるオプション 次のオプションは Zend_Validate_Callback にてサポートされます: callback: バリデーションにて 呼び出されるコールバックのセット options: コールバックに 与えられる追加オプションのセット 基本的な使用法 もっとも単純なユースケースは単なる関数を持ち、コールバックとして使用します。 次の関数を持ったつもりになりましょう。 Zend_Validate_Callback内で使用するにはちょうどこの通り 呼び出さなければなりません: isValid($input)) { // input appears to be valid } else { // input is invalid } ]]> クロージャとの使用方法 PHP 5.3 は基本的には、内包あるいは 匿名 関数の 無名関数を導入しています。 PHP にて Zend_Validate_Callback とともに 使用される別の形式の次のようなクロージャを考えましょう。 例として: isValid($input)) { // input appears to be valid } else { // input is invalid } ]]> クラスに基づくコールバックの使用方法 もちろんクラスメソッドをコールバックとして使用することは可能です。 次のクラスメソッド を持ったつもりになりましょう: コールバックの定義はこのケースとほぼ同様です。メソッドより前にクラスインスタンス化して おいて、コールバックを取得する配列を生成します: isValid($input)) { // input appears to be valid } else { // input is invalid } ]]> スタティックメソッドをコールバックとして定義することが可能です。 次のクラス定義を 考慮し、バリデータの使用方法は: isValid($input)) { // input appears to be valid } else { // input is invalid } ]]> 最終的に、あなたが PHP 5.3を使用しているならば、あなたのクラスにおいて __invoke() マジックメソッドを定義できます。 もしそうしたならば、 コールバックとして機能するクラスをインスタンス化したものを単に用意します。 isValid($input)) { // input appears to be valid } else { // input is invalid } ]]> オプションの追加 Zend_Validate_Callback は コールバックへ追加引数として提供されるオプションの使用を許容します。 次のクラスとメソッド定義を考えてみましょう: バリデータに追加引数として通知する2つの方法があります: 追加引数をコンストラクタに渡すか setOptions() メソッドへ渡します。 コンストラクタに渡すには、"callback" と "options" を二つのキーにもつ配列を 渡す必要があります: array('MyClass', 'myMethod'), 'options' => $option, )); if ($valid->isValid($input)) { // input appears to be valid } else { // input is invalid } ]]> 一方で、インスタンス化した後のバリデータへ渡せます: setOptions($option); if ($valid->isValid($input)) { // input appears to be valid } else { // input is invalid } ]]> 追加引数が isValid() へ渡されたとき、これらの 値は $value のすぐあとに追加されるでしょう。 setOptions($option); if ($valid->isValid($input, $additional)) { // input appears to be valid } else { // input is invalid } ]]> コールバックを呼び出す際には、 isValid() に渡される他の値全てを後ろに従えたコールバックに バリデートされる値が第一引数として常に渡されます。 他のオプションは全てその後に続きます。使用できるオプションの量と型は無制限です。