PHP テンプレートエンジン Smarty 使用方法
2012.09.11
この記事は最終更新日から1年以上が経過しています。
流れでSmartyを使うことになりましたので、色々と残していければよいかと。
まず、Smartyとはなんぞよ?のところから。
簡単に言いますとPHPのテンプレートです。(きっぱり)
PHPにはHTML内にコードを埋め込むことが出来るという他の言語にない特徴を持っていまして、初心者でも比較的直感的に使うことができます。が故、動的なWebページやWebアプリケーションを作成する際、PHP の言語を用いられて作成されることが多いです。
そんなPHPの言語をもっと簡単に短い記述で機能を追加しようではないか!っていうのがSmartyになっちゃいます。
Smartyとはなんぞや
先程も述べさせて頂きましたが、SmartyはPHPのテンプレートエンジンです。
ロジックとデザインの分離の為のテンプレートエンジンで、PHPのお手軽さ+保守性に優れているため多く利用されているようです。
Andrei Zmievskiが社内用に開発した「SmartTemplate」が前身のテンプレートエンジンのようで 「スマート(smart)」なテンプレートエンジンを。という意味合いを込めてSmartyと名付けたようです。
システムをMVC( 「Model」(データベースなどビジネスロジックを扱う要素)「View」(出力結果のHTML表示などUIを扱う要素)「Controller」(入出力を制御しModelとViewの橋渡しを行う要素))の3つに分けて実装する方式で、開発作業の分担を容易にし、作業途中に発生するの仕様変更にも最小限にするメリットがあります。
また、記述がより容易になる他にも「高速で動作」するという特徴を持っています。
インストール
公式サイトからインストールすることが出来ます。
Smarty 公式サイト
Smarty 公式サイト(日本)
http://www.smarty.net/docsv2/ja/
ダウンロード
http://www.smarty.net/download
以下の項目からダウンロードすることが可能です。
tarファイルかzipファイルかも選択可能です。
2012年9月現在だと、3.1.11が最新ですかね。「Smarty-3.1.10.tar.gz」か「Smarty-3.1.zip」をクリックするとダウンロードできます。
セッティング
インストールが完了しましたら、使用出来るようにセッティングしましょう。
開発環境を作るためMAMPをインストールします。(MAC)
MAMPのセッティングはこちら「MAMPの設定方法」を参照に。
Smartyのファイルをダウンロードし、展開すると以下のディレクトリとなっています。
Smarty-v.v.vv
|-change_log.txt 等
|-libs/
| |-plugins/
| |-sysplugins/
| |-sysplugins/
| |-SmartyBC.class.php
| |-Smarty.class.php
|-demo/
| |-cache/
| |-configs/
| |-plugins/
| |-templates/
| |-templates_c/
|-libs/
| |-plugins/
| |-sysplugins/
| |-sysplugins/
| |-SmartyBC.class.php
| |-Smarty.class.php
「Smarty-v.v.vv」を「Smarty」にリネームし、直下に「libs」以下のファイルを置きます。
php.iniの変更
アプリケーション>MAMP>conf>php5.3>conf 内に格納されているphp.iniの変更を行います。
277行目 display_errors = Off を display_errors = On に変更
287行目 log_errors = Off を log_errors = On に変更
※変更しなくても使用できますが、デフォルトだとエラーメッセージを表示しない設定になっているので、エラーメッセージを表示させるようにします。
それでは、/Applications/MAMP/htdocs/にindex.phpを作成し、テストを行います。
Smarty を利用するためにはSmarty.class.phpを読み込まないといけないので、Smarty.class.phpをrequire_onceで呼び出します。
<!?php require_once('Smarty/Smarty.class.php'); $smary = new Smarty; ?>
ディレクトリを定義して読み込み方
<?php define('SMARTY_DIR', '/usr/local/lib/Smarty/libs/' ); require_once( SMARTY_DIR . 'Smarty.class.php' ); $smarty = new Smarty(); ?>
http://localhost:8888/
を開き、特に問題なければエラー表示も出ず、真っ白な画面となります。
Smarty を利用する場合、libs
ディレクトリ内の構成が改変されていなければ、
基本的にSmarty.class.phpファイルさえ見つけられればライブラリを利用することが出来るようになります。
これで一応MAMPでのセッティングはOKですね。
ライブラリファイルが正常に設置できたなら、次は、実際に作成するアプリケーションのために Smarty用のディレクトリの設定となります。
smartyで必要なディレクトリは以下のとおりです。
・テンプレートディレクトリ
・コンパイルディレクトリ
・設定ファイルディレクトリ
・キャッシュディレクトリ
インストールして解凍したファイルに含まれている「demo」ディレクトリを確認してもらえれば分かるのですが、
以下のディレクトリーを作ることになります。
templates・・・テンプレートディレクトリ
templates_c・・コンパイルディレクトリ
configs・・・設定ファイルディレクトリ
cache・・・キャッシュディレクトリ
詳細はそれぞれ、
templates・・・テンプレートファイルを格納するディレクトリ。各テンプレートファイルの拡張子は .tpl
。
templates_c・・テンプレートファイルを利用して php ファイルに展開されたファイルを格納するキャッシュ用ディレクトリ。
Webサーバー(httpd)がファイルを作成するので、httpd.conf で設定されている Webサーバーを起動するアカウント(User, Group)が書き込みできるオーナーとパーミッションにしなければなりません。
configs・・・テンプレートなどを利用する際の設定や初期値などを登録するファイルを格納するディレクトリ。 設定ファイルが test.conf という名前の場合、テンプレートファイル内で以下のように利用します。
cache・・・built-in cachingという機能を有効($smarty->caching = true;)にした際に使用されるキャッシュ用ディレクトリ。Webサーバー(httpd)がファイルを作成するので、httpd.conf で設定されている Webサーバーを起動するアカウント(User, Group)が書き込みできるオーナーとパーミッションにしなければなりません。
となっています。
先ほど作成したindex.phpのディレクトリに作成していきます。
/Applications/MAMP/htdocs/
ディレクトリ
|-htdocs/
| |-index.php
| |-templates/
| |-templates_c/
| |-configs/
| |-cache/
それではテストとして、templates/にtest.tplを作成します。
test.tplを作成し、以下のコードを記述。
今日は{$smarty.now|date_format:'%Y年%m月%d日'}です。
ドキュメントルートに置いたファイルを編集
$smarty->display('test.tpl');
を追加してtemplates/に配置したtest.tplを呼び出します。
index.php
<?php ini_set( 'display_errors', 1 ); require_once('Smarty/Smarty.class.php'); $smarty = new Smarty(); $smarty->template_dir = 'templates/'; $smarty->compile_dir = 'templates_c/'; $smarty->config_dir = 'configs/'; $smarty->cache_dir = 'cache/'; $smarty->display('test.tpl'); ?>
今日は2012年09月11日です。
と日付が表示されれば問題ありません。