選択肢
HTML_Template_Flexyのマニュアルを眺めてみる。
foreachの構文がどうも駄目っぽいなぁ。
まだHTML_Template_ITの方が良さそう。
だけどPHP側はFlexyの方がいいような。
自分で作るのはそんなに時間がかからないと思うけど、キャッシュ機能まで実装はできないな・・。
ソース読んで同じようなものがすぐ作れるレベルならいいんだけど。
今は
$template->add('title', '電話番号'); $phone[] = array('name' => 'Aさん', 'cellular' => '090-XXXX-XXXX', 'home' => '0120-XXX-XXX'); $phone[] = array('name' => 'Bさん', 'cellular' => '090-YYYY-YYYY', 'home' => '0120-YYY-YYY'); $template->add('PHONE', $phpne);
<table> <tr><td colspan="3">%title%</td></tr> <tr> <td>名前</td><td>携帯</td><td>自宅</td> </tr> <!-- tmpl:loop %PHONE% --> <tr> <td>%name%</td><td>%cellular%</td><td>%home%</td> </tr> <!-- tmpl:endloop --> </table>
とかやってるから、なるべくこういう形式がいいんだよなー。
テンプレートのループ開始関数とループ終了関数を使うよりは配列で設定した方が直感的でいい。
慣れの問題か・・。
一度配列に入れても結局テンプレートの中で分解するんだから遅くなるだけなんだろうか。。
テンプレートの中で配列で値を格納してたらループ回数は同じだよなぁ(たぶん
そして今回は変数の設定が自動化だから、アクションの中で
$this->title = '電話番号'; $this->PHONE[] = array('name' => 'Aさん', 'cellular' => '090-XXXX-XXXX', 'home' => '0120-XXX-XXX'); $this->PHONE[] = array('name' => 'Bさん', 'cellular' => '090-YYYY-YYYY', 'home' => '0120-YYY-YYY');
となるわけだ。
繰り返し文で書くと
while ($data = $rs->fetchRow()){ // DBにname, cellular, homeテーブルがあったとして $this->PHONE[] = $data; }
となるからかなり楽そうなんだけど。
Flexyに似てるけど、key => value となるところが違うのかな。
あれ?これじゃーループ中に変数は2つしか設定できない?
どうも理解が足りないな。
$template->ループ開始(); foreach ($vars as $var){ .... $template->次のループへ(); } $template->ループ終了();
このパターン以外のテンプレート設定方法って何かあるのかな。。