Smartyの使用を拒否した理由

歴史への短い遠足


私がアメリカのオフィスに勤務するようになったとき(もちろん、それはもちろん、今年は2000年でした)、私はこの組織が採用した標準を使用せざるを得ませんでした。 そしてそれらの1つは、独自のテンプレートエンジンの使用でした。これは単純なhtmlファイルのように見え、特殊な文字シーケンス(通常は「##」で始まり、末尾)があり、ブラウザに送信される前にテキストまたは他のテンプレートの結果に置き換えられます。 また、そのようなテンプレートを操作するための独自のAPIがありました。 非常にシンプルなAPI。 そして、当時私は非常に若かったので、これらの標準を採用し、仕事でそれらを使用し始めました。



このようなテンプレートを使用する例を次に示します。

$template = new Template(); $template->Load('NameTemplate.html'); $template->Replace('##TITLE##', 'Hello world!'); $template->Out();
      
      







知人


年が過ぎました。 そして、次のプロジェクトの実装中に、「Smartyはテンプレートエンジンとして必要です。」という要求が生じました。 党は言った:「それは必要です。」 コムソモールは答えた:「はい!」。 だから私はSmartyに会いました。 私は彼が本当に好きだった。 私は大喜びしました。 私が実現するために必要なタスクは、その助けを借りて実現できます。 時にはシンプル、時には非常に難しいが、可能です。 一般に、私はSmartyを使い始めました。



洞察力


さらに数年が経ちました。 理由は覚えていませんが、使いやすいphpのフレームワークを見つける作業がありました。 それらのリストを見つけて、私たちの目的のためにそれらをテストし始めました。 当然、要件の1つはSmartyサポートでした(これはすでに私の要件でした)。 フレームワークの1つ(KohanaまたはCodeIgniterのいずれか)のドキュメントを読んでいると、次のようなフレーズに出会いました。「Smartyを使用できます。フレームワークでの接続方法と操作方法はこちらですが、ネイティブphpより理解しやすく、高速に... "。 そして、私は思った。 彼はネイティブphpとSmartyの実装を比較し始めました。



もっと簡単? もちろん、私たちはすでにphpを知っています。

より明確ですか? もちろん、すでにphpを理解しているからです。

より速く? もちろん、Smartyコードはphpコードに変換されます(少なくとも、高速化することはできませんが、簡単に遅くなります)。

より安全ですか? そう思う。 それは議論することができますが。 どこにでも穴を開けることができます。



自分で見てください:

 {$foo}  <?=$foo?>
      
      







 {assign var=foo value='baa'}  <?php $foo = 'baa'; ?>
      
      







 {include file='header.tpl'} -    php      <?php include 'header.php'; ?>     (   )
      
      







 {assign var="foo" value="`$foo+$bar`"} // ,     . <?php $foo += $bar; ?>
      
      







条件とサイクルの例は示しません-それらは多くのスペースを占有し、ほぼ同じように見えます。



また、Smartyで再帰的ツリートラバーサルの実装を行った方法を覚えています。オプションの1つは、テンプレートを作成し、このテンプレートを内部で呼び出すことです。 PHPでは、次のようになります。

 <?php function draw_tree($tree){ foreach ($tree as $node) { echo '<option ...>'.$node['name'].'</option>'; draw_tree($node['childs']); } } ?>
      
      







長い間、私はSmartyがデザイナーにとってより便利であると自分自身を納得させようとしました。 しかし、彼らは(さまざまな理由で)彼に来たことはありません。 最後に、プログラマーとして、スクリプト言語用のスクリプトを作成する必要がありました。 さらに、Smartyの一部のバージョンは脆弱であることが判明したため、ライブラリを更新して互換性チェックを行うために、私は時々古いプロジェクトに戻る必要がありました。



PS。 私はすでに2〜3年Smartyを使用していないため、現状を評価することは困難ですが、以前よりも良くも悪くもないと思います。



All Articles