gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

テンプレートエンジン「conv」クラスへの言及その3

http://d.hatena.ne.jp/gallu/20060802/p3
http://d.hatena.ne.jp/gallu/20060818/p2
からの続きです。


さて複置換です。元々、イメージはBBSでした。つまり「一定のパターンの繰り返し」ですね。
頭の中にあったのは「ベースがあれば後は変数当てはめまくって片付くよねぇ」でした。
そうですねぇ。例えば、BBSでこーゆー感じをイメージしてみます。


名前:%%%name%%%
書き込み日付:%%%date%%%
E-Mail:%%%email%%%
メッセージ本文:%%%body%%%

したら、こいつを何とかして囲ってやればいいんじゃなかろうか、って考えて、そのまんま実行してみました。


$$$message_loop$$$
名前:%%%name%%%
書き込み日付:%%%date%%%
E-Mail:%%%email%%%
メッセージ本文:%%%body%%%
$$$/message_loop$$$

これで「message_loopって名前をつけた要素の塊」がどうにかなりそうな感じです。
後は、プログラム的に「渡したら後はなんとかしてくれんべ」っていう、他力本願主義(あるいはオブジェクト指向)で大丈夫なはずです。
呼び出し方はしたがって


$mobj = new てけとうなクラス;
$conv_obj->MultiDic("message_loop", $mobj);

こんな感じです。処理方法は多分きっとmobjが知ってます。情報が足りなければ、mobjに適当に設定をしておいてやればOKなはずです。
ちなみに、以前はねちねちと処理書いてましたが、最近、うちの子達がよってたかってお便利なクラスを作り倒しまして。
そのお便利君を使うと、Smartyのように「配列渡したらあとは勝手にループ」してくれます。


$mobj = new simple_loop;
$mobj->set_data(配列でハッシュ配列なデータ);
$conv_obj->MultiDic("message_loop", $mobj);

こんな感じです。
さぁこれで繰り返しがOKです。後は「出したり出さなかったり」ってのが、後で出てきて…大慌てで実装しようとしたら、実装せずに片付いちゃった件について書いてみます(笑