テンプレートエンジンの自作を考える時に、テンプレート変数の処理は簡単に出来ます。
PHPの関数のreplaceなどを使えば処理できるからです。
これらの単純な処理だけではどうしても実現できないのが繰り返しの要素です。
例えばテーブルを作成するようなことがテンプレートで必要で、テーブルの各要素になにか別な値を入れたいなどの用途には繰り返す処理がどうしても出てくるからです。
PHPの中からHTMLのタグを出力するのは簡単ですが、テンプレートのシステムは、あくまでもHTMLをそのまま処理したいわけです。テンプレートを作る人がPHPを知らなくても良いからです。
htmltemplate.incでは繰り返しを次の様な感じで書きます。
<!--{each hoge_loop}-->
{val hoge_loop/hogehoge}
<!--{/each}-->
このhoge_loopとhogehogeが配列の要素のキーになっています。
{val hoge_loop/hogehoge}は、配列に格納されている値を出力します。
で、問題はこの複雑な多次元配列をどう作るかですが・・・
$Dimension = array(
'hoge_loop' => array(
array( 'hogehoge' => '一回目です' ),
array( 'hogehoge' => '二回目です' ),
array( 'hogehoge' => '三回目です' )
)
);
とこんな感じのものになるでしょう。
少々変則な多次元配列で、2+2次元とでも言うものでしょうか。
$Dimension['hoge_loop'][0]['hogehoge'] = '一回目です';
$Dimension['hoge_loop'][1]['hogehoge'] = '二回目です';
$Dimension['hoge_loop'][2]['hogehoge'] = '三回目です';
と書く事で表現できるので、あり得ないものではないのです。
システム系の言語ではこういうことはなかなかしませんが
連想配列では十分に表現できる範囲です。
この表現を使えばHTMLのタグを繰り返したい数だけループで回すことが可能です。
実際には、配列に値がある限り繰り返すという内部処理になっています。
猫
2013-05-20 13:04
nice!(0)
コメント(0)
トラックバック(0)
[編集]
コメント 0