コネクト株式会社 技術情報コンテンツ | ||
[[コーディング指針]] SmartySmartyは、PHPで最も普及しているテンプレートエンジンである。 表示処理の隔離PHPは、HTMLの中に動的な要素を埋め込むのに適した言語である。 この特徴は、SSI(Server Side Include)と共通している。 しかし、アプリケーションの規模がある程度に達すると、このコーディングスタイルのままでは、処理がバラバラに分離されてしまい、収集がつかなくなる事が容易に想像できる。 このような問題を回避するには、まず機能毎にコードを分類し、(特に)表示処理を隔離する必要がある。 この考え方を突き詰めるとMVCモデルに到達するのだが、ここではテンプレートエンジンについて解説する。 Smartyの使い方下記は、Smartyを使った初歩的なコーディング例である。 <?php $smarty =& new Smarty; $smarty->assign('name', 'Zeev & Andi'); $smarty->display('sample.tpl'); ?> 下記はテンプレートの例である。 <html><head> <title>{$name|escape}</title> </head><body> Zend Engine: programmed by {$name|escape}. </body></html> 前述のスクリプトと組み合わせると、{$name|escape}の部分にassign()メソッドで割り当てた“Zeev & Andi”の文字列が挿入される。 よりセキュアにする方法Smartyを使う場合、次の事に気をつけてコーディングすると、よりセキュアなサイトになる。
Smartyの拡張Smartyに標準搭載されているプラグインは、マルチバイト(日本語など)に対応していない。 そのため、文字列を分断する動作を持つプラグイン(truncate, wordwrap など)は、マルチバイトに対応した代替プラグインを作成する必要がある。 静的な拡張Smartyがインストールされているディレクトリの下に、pluginsというディレクトリがある。ここに、標準搭載されているプラグインが配置されている。 動的な拡張Smartyには、register_function()など、動的にプラグインを追加するメソッドが用意されている。 このメソッドを使うことで、プラグインを追加する事ができる。 特定のプロジェクトだけで使用するプラグインは、動的に拡張する事が望ましい。 $smarty =& new Smarty(); $smarty->register_modifier("mb_wordwrap"); $smarty->register_modifier("mb_truncate"); $smarty->register_block("zps_cache"); Smartyのプラグイン追加メソッドは次の通り。
|