昔、妄想していたことを、ふと思い出したので忘備録として。
僕は幾つかある PHP のテンプレートシステムのうち PEAR::HTML_Template_Flexy を好んで使うのですが、これにはテンプレート中のフォーム要素を取得・操作するステキな機能があります。
そして、それを応用してフォームに対応した SQL や O/R マッパの設定ファイルを自動生成するような仕組みは作れないものかと思いついたことがありました。
素の Flexy に少し手を入れて、出力時には無視される適当な名前空間の属性として型情報を持たせれば実現できそうな気がします。
サイト (or ページ) の立ち上げのときにはかなり有効な方法ではないでしょうか。
その勢いで簡単なバリデーションのルールもテンプレートで指定できたら嬉しいかも。
追記:
「テンプレートドリブンなデータベーススキーマ作成」より「テンプレートドリブンなバリデーション」の方が有用と思えてきたので、サンプルをでっち上げてみました。
<form name="example"> <input name="p1" type="text" size="20" value="" v:type="string" v:min="4" v:max="20" v:regex="^[a-z]+$" /> <input name="p2" type="text" size="5" value="0" v:type="int" v:min="0" v:max="100" /> <select name="p3" v:type="string" v:enum="yes"> <option value="foo">foo</option> <option value="bar">bar</option> </select> <v:enum v:name="p4" v:type="int" /> <input id="p4_1" name="p4" type="radio" value="1" /> <input id="p4_2" name="p4" type="radio" value="2" /> <input id="p4_3" name="p4" type="radio" value="3" /> <input id="p4_4" name="p4" type="radio" value="4" /> </form>
こんな感じでテンプレートを書いておけば、あとは $tpl->validateInput(); で OK みたいな。ラジオボタンおよびチェックボックスの enum 指定がしっくり来ないけど、詰めていけば面白いものができそう。