第 1章Smarty とは?
Smarty は PHP のためのテンプレートエンジンです。具体的に言うと、php
のプレゼンテーションからアプリケーションのロジックとコンテンツを分離して管理する事を容易にします。
これは、プログラマーとテンプレートデザイナーの役割が異なり、
これらの役割を違う人間が受け持っている場合に最適だと言えます。
例えば、新聞記事を表示するwebページを作成しているとします。
記事の $headline (見出し)、$tagline
(キャッチフレーズ)、$author (著者) および
$body (本文) が中身を構成する要素となります。
ここには、それをどのように表示するかという情報は含まれません。
これらはアプリケーションによって Smarty に
渡されます。
テンプレートデザイナーはこのテンプレートを編集し、
HTML タグや テンプレートタグ
を使用して、これらの 変数
と要素 (テーブル、div、背景色、フォントサイズ、スタイルシート、svg など)
の体裁を調整します。
ある日、プログラマーが (アプリケーションロジックを変更したなどの理由で)
記事の内容を取得する手段を変更する必要が出てきたとします。
この変更はテンプレートデザイナーに影響がないため、
記事には全く同じ内容のテンプレートが適用できるでしょう。
同様に、もしテンプレートデザイナーがテンプレートを完全に作り直したい場合でも、
アプリケーションロジックを変更する必要がありません。
したがって、プログラマーはテンプレートを作り直す事なくアプリケーションロジックを変更する事ができ、
テンプレートデザイナーはアプリケーションロジックを壊す事なくテンプレートを変更できます。
Smarty の設計の目標の一つとして、
ビジネスロジックとプレゼンテーションロジックの分離があります。
これは、プレゼンテーションのためだけという条件の下で
テンプレートにロジックを含める事が可能であるという事です。
他のテンプレートを include
したり、テーブル行の色を
変更 したり、変数を
大文字 にしたり、データの配列を
ループ させたり、それを
表示
したりといったことが、プレゼンテーションロジックの例になります。
これは、Smarty がビジネスロジックとプレゼンテーションロジックの分離を
強制している訳ではない事を意味しています。
Smarty はテンプレート内に置かれたものがビジネスロジックなのか何なのか全くわかりません。
また、テンプレートにロジックを 置きたくない
ならば、テキストと変数のみでコンテンツを作り上げることも可能です。
Smarty のユニークな特徴の一つは、テンプレートをコンパイルすることです。
つまり、Smarty がテンプレートファイルを読み込み、
それをもとにして PHP スクリプトを作成するということです。
一度作成してしまえば、その後はコンパイルされた PHP スクリプトが実行されるので、
各リクエスト時にテンプレートファイルのパースによるオーバーヘッドがありません。
さらに各テンプレートは、
eAccelerator、
ionCube、
mmCache
あるいは Zend Accelerator
のような PHP コンパイラやキャッシュソリューションを最大限に活用することができます。
Smarty の特徴