選択肢

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->ループ終了();

このパターン以外のテンプレート設定方法って何かあるのかな。。