Home > Smarty

Smarty Archive

Smartyのデリミタに関して

Smartyに限らずテンプレートエンジンにおいて、テンプレートエンジン側で操作を行う領域を判別するためのデリミタをどういった文字列にするか、と言う問題は割かし大きなものだと僕は思っています。

今までであれば僕の場合、<% ~ %>といういわゆるASP形式だったのですが、先日「HTMLのコメントアウトのデリミタであれば、そのままWISIWYGなエディタでデザインテンプレートが編集できるじゃないか」と言うお話を伺い、大変感銘を受けた次第です。

確かに2種類の定義がひとつのファイル内に混在しているデータに対して、片方の定義におけるコメントアウトがなされていれば、実質的にひとつの定義として処理する事が可能になります。

「HTMLはメモ帳で手打ちッスよ」とおそらく僕に限らずわりかし古い時期からWEBを利用している人間は考えるものですが、最近のデザインにおいては脳内でコードからデザインを組み立てながら構築するよりも、直感的に編集できる方が工数においてパフォーマンスがよい事も確かです。
これは最近のWISIWYGなエディタが生成するコードが昔に比べてマシになったことや、WEBデザイナと言う職種が洗練されてきたことにより起きた変化と言えるでしょう。

話がずれてきましたが、結局のところSmartyで言えば

<? php
class mySmarty extends Smarty{
 function mySmarty(){
  $this = new Smarty;
  $this->template_dir    = _SM_TMP_DIR_; //Smartyのテンプレートディレクトリ
  $this->compile_dir     = _SM_TMP_C_DIR_; //Smartyのコンパイル済みキャッシュディレクトリ
  $this->config_dir      = _SM_CONFIG_DIR_; //Smartyの設定ファイルディレクトリ
  $this->cache_dir       = _SM_CACHE_DIR_; //Smartyのキャッシュディレクトリ
  $this->left_delimiter  = '<!--';
  $this->right_delimiter = '-->';
 }
 
}
?>

と言うことになるってことですね。

Smartyに限らず自作でないクラスライブラリを使う場合は、メソッドの追加が無くとも将来の拡張性を踏まえて継承した形で実装すべきだと僕は考えていますが、Smartyのようにインスタンスを生成する際にいくつかの定型的なプロセスを経る場合は、このように継承したクラスのコンストラクタで定型処理を行う事で無駄なコーディングが減る事になります。

あれ、なんの話だっけ。

ホーム > Smarty

Search
Feeds
Meta

Return to page top