FormパラメータのValidateするモジュールを作るメモ

毎度お得意の車輪の再発明シリーズ。

  • CGI.pm などで解析済みの Form (Query) パラメータを validate する。
  • validate した結果、valid なものは元の値と入れ替え、外れたものはパラメータごと削除する。
  • エラーになったパラメータ名のリストやエラー内容も提供する。
  • ルールによっては、パラメータ内容の簡単な変換も行う。
  • (自作)フレームワークプラグインにしたい。

内部的に、ルールを定義するクラスと実際の validate をするクラスが必要。

ルールのクラス

  • my $r = Rule->new(RULE) でルールオブジェクトのインスタンスを作成。
  • RULE はルールを定義するハッシュリファレンス。詳細は後で考える。
  • $r->add_rule(RULE) でルールの追加定義 (または再定義) 。
  • $r->dump() でルール定義のダンプが取れるといいかもしれない。
  • my $r2 = $r->copy() でインスタンスのコピーを作れるといいかもしれない。

validateクラス

  • my $v = Validator->new(rule => $r) でインスタンスを作る。
  • $r を渡す代わりに RULE を渡すと、自動的に Rule のインスタンスを作成してくれるといいかもしれない。
  • $v->add_rule(RULE) でルールの追加定義が出来るといいかもしれない。
  • $v->validate(QUERY) で実際に入力値のチェック。
  • QUERY は CGI.pm インスタンス互換のオブジェクト、またはハッシュリファレンス。

validate結果。

  • $v->is_valid(NAME) でパラメータ名を渡すと、エラーの場合は false 値を、エラーでない場合は true 値 (0 but true?) を返す。
  • $v->error(NAME) でパラメータ名を渡すと、エラーの場合はエラー内容を、エラーでない場合は undef を返す。
  • $v->errors() でエラーになったパラメータ名の一覧を返す。
  • CGI.pm との互換性のため、$v->param() を引数無しで呼ぶとエラーでないパラメータの名前を配列で返す。
  • CGI.pm との互換性のため、$v->param(NAME) でパラメータ名を渡すと、パラメータの内容を返す。
  • CGI.pm との互換性のため、$v->param(NAME, VALUE) でパラメータ名と値を渡すと、パラメータの内容を更新する。

CGI.pm 互換のメソッドを作るよりも、もとのインスタンスが持っているパラメータを直接書き換えた方がいいかもしれない。


お、そろそろ時間がないので今回はこの辺で。