HTML_QuickFormとの連携

PHP関西界隈で1、2を争う人気のPEARのライブラリ、HTML_QuickForm。大量の入力を扱うという場面では手放せないというお話らしい。(らしいというのは私は情報提供系のコンテンツが多いので、あまりこういうので困ったことがないので・・・)

MapleとHTML_QuickFormと連携させようとしたらどうだろうか?ということについては、あっさりと「MapleのConvert_Filter/Validate_Filter/View_Filterを使わないQuickForm向けのFilterをつくって対処する」ということでいいと思う。

Mapleが標準で準備している入力値変換(Convert_Filter)、入力値チェック(Validate_Filer)、Smartyを使った出力結果生成(View_Filter)は絶対使う必要があるものではなくて、別のFilterで対応するというのは全く問題ないと思う。

連携用のFilterは以下のようなものになるんじゃないかと思う。

  • HTML_QuickFormを使った入力値変換やチェック処理を行う
  • 入力値変換、チェック済みの変数をActionのパラメータにInjection
  • (必要があれば)Actionの処理結果をHTML_QuickFormに反映
  • HTML_QuickFormで出力結果を生成

これを実現しようとすると標準で入ってしまうConvert_Filter/Validate_Filter/View_Filter/Action_Filterを自由に差し替え可能にしといたほうがいいな。FilterChainをどのように組み立てるか?ということにこの4つのフィルターも含めて指定できるようにすればいいかな?けど、よく使うものを毎回毎回設定ファイルに記述するもの面倒なので、なにも指定しないとこの4つがはいるが、特別な設定をするとそれを上書きするということができるというようにしたほうが柔軟かな?これ、検討します。

もしこれが実現されれば、本当にMapleはFilterChainを組み立てて、それを実行するだけというシンプルなものになるし。

結局、Mapleは以下の目的のためにつくったということになる。

  • プレゼンテーション層のロジックを何段階かのFilterを使うことによって処理
  • ビジネスロジック層(およびデータアクセス層)はActionのexecute関数に閉じ込める

これさえできれば別に標準で準備しているFilterなんてサンプル実装フィルターだとおもっていただければいいです。

好き勝手にいろんなものに依存性を注入できる仕組みってのはやっぱり必須ですね。Maple DIConを完成させねば。

Maple(かえで)でDICon(大根)ということなら、開発コードネームは「もみじおろし」か!と一人で喜んでいたのは内緒。鍋の恋しい季節になってきたなーと。