第 1章Smartyとは?

SmartyはPHPのためのテンプレートエンジンです。より明確にphpのプレゼンテーションからアプリケーションの ロジックとコンテンツを分離して管理する事を容易にします。これはプログラマーとテンプレートデザイナーの役割が異なる 状況か、たいていの場合は同じ人間ではないのが最良だという事です。 例えば、新聞記事を表示するwebページを作成しているとします。 記事のヘッドライン・キャッチフレーズ・著者・本文を要素として満たし、それらがどのように提供されたかの情報は 含みません。 これらはアプリケーションによってSmartyの中に渡され、テンプレートデザイナーはこれらの要素 の体裁(HTMLテーブル・背景色・フォントサイズ・スタイルシール等)を整形するために HTMLタグとテンプレートタグの組み合わせを使ってテンプレートを編集します。 ある日、プログラマーは(アプリケーションロジックを変更して)記事の内容が回収される手段を 変更する必要がでてきました。この変更はテンプレートデザイナーに影響せず、 今までどおりの全く同じ内容のテンプレートになるでしょう。 同様に、もしテンプレートデザイナーがテンプレートを完璧にリデザインしたい場合でも、 アプリケーションロジックを変更する必要がありません。したがって、プログラマーはテンプレートを作り直す事なく アプリケーションロジックを変更する事ができ、テンプレートデザイナーはアプリケーションロジックを壊す事なく テンプレートを変更できます。

Smartyの設計の目標の一つとしてビジネスロジックとプレゼンテーションロジックの分離があります。 これは、プレゼンテーションのためだけという条件の下でテンプレートにロジックを含める事が可能であるという事です。 プレゼンテーションロジックの例といえば、他のテンプレートをincludeしたり、テーブル行の色を変えてみたり、 変数を大文字にしてみたり、データの配列を通してループさせたり、またそれを表示したりといったような事です。 これは、Smarty がビジネスロジックとプレゼンテーションロジックの分離を強制している訳ではない事を意味しています。 Smarty はテンプレート内に置かれたものがビジネスロジックなのか何なのか全く知らないのです。 テンプレートにロジックを置きたくないならば、あなた自身がテキストと変数のみでコンテンツをまとめる事で成す事が出来ます。

Smartyのユニークな特徴の一つは、最初のリクエスト時にテンプレートファイルを 実行可能なPHPスクリプトにコンパイルする事です。その後はコンパイルされたPHPスクリプトが 実行されるので、各リクエスト時にテンプレートファイルのパースによるオーバーヘッドがありません。 さらに各テンプレートは、Zend Accelerator (http://www.zend.com/) や APC (http://www.php-accelerator.co.uk) のような、 PHPのパフォーマンスを向上するためのソリューションを最大限に利用する事ができます。

Smarty の特徴: