テンプレート言語

そうそう、独自テンプレート言語はイカンね。覚えることが増えるのに自由度が減る。自由度を増やすってことは独自テンプレート言語単語が増えるってことで最悪だ。ホスト言語との親和性が高める良い方法は、ホスト言語をそのまま使えるようにすること。ギャップがあると、こんなことをするハメになる(他に解決方法があるような気がするが……)。


そもそも、なんで独自テンプレート言語があるんだっけ? ホスト言語がそのまま使えれば覚えること少ないのに。制限?余計なことして欲しくないから? ビューとロジックの分離とかそんなんじゃないよなぁ。それこそ高機能なテンプレート言語要らないし。


要するに、Ruby がそのまま使える ERB カワユス! Smarty の繰り返し構文ってどうよ……ってことですよ! PHPSmarty みたいなヤツより、素の PHP で書いたテンプレートに値をインジェクトしていく仕組みの方が良さそうだと思うんだけど。ERB っぽく書いてみよう。

{foreach item=e from=$ary}
    {$e}<br />
{/foreach}

{foreach key=k item=v from=$hash}
    {$k}: {$v}<br />
{/foreach}

より、

<? for($i = 0; $i < sizeof($ary); $i++) { ?>
    <? print $ary[$i] ?><br />
<? } ?>

<? foreach($hash as $k => $v) { ?>
    <? print $k ?>: <? print $v ?><br />
<? } ?>

の方がイイ……くない。配列としての連想配列操作がウザイな。Smarty 作った人、PHP 嫌いなんじゃないのか? なにより、print ウザイな……。ハフマン符号化しないとな。やっぱ素じゃだめか。Rails でもそうだけど、中括弧が切られるとなんか変だ。そもそも途中で切ることできたっけ?(試す気なし)。


とにかく、Rails(ERB) でも | でフィルタチェインしたらカッコいいんじゃないかと思っていましたが改めました!(ところでリンクのエントリで何も反応が無かったのはカリー化の使い方とか概念を根本的に間違ってるからだろうか? 「みんな大好きカリー化」だと思ってたのに!) わざわざ異文化(シェル文化)を持ち込むこたぁない。覚えることは少ないに越したこたぁない。


改めてみると ERB 良くできてるな。HTML だけじゃないし。