Validatorはこんなのがいい

  1. バリデータは子にバリデータを持てる
  2. 子のバリデータは名前をつけてセットする
  3. 子のバリデータをどう呼び出すかは親に依存


バリデータが子を持つというのは、配列を受け取ったときに要素のバリデーションを委譲したり、部分文字列のバリデーションを委譲するなどに使う。

子のバリデータをセットするときにはバリデータに対して以下のように呼び出す。

$validator->setChild('name_of_validator', $validator_instance);

これによってさまざまなパラメタをもたせた同クラスバリデータを複数持たせたり、別の用途で同一のバリデータをセットすることができる。

子のバリデータの呼び出しが親に依存というのは、利用者はどのように呼び出されるかを気にせず、ただ子を渡してやればいいだけということである。

こんな機能をMojaviのValidator(とその補佐クラス)に追加してみようと思う。