Smartyとは?
SmartyはPHPアプリケーションで利用されるテンプレートエンジンです。
PHPでは、HTMLの中にタグを埋め込むことで手軽にロジックを実装することができますが、複雑なコードをHTMLに埋めこむとコードの可読性が著しく低下してしまうことがあります。
Smartyを利用し、デザインとロジックを分離することで上記の問題を解決することができます。
また、SmartyはPHPで作成されたライブラリであるため、PHPが動作するサーバであればどのサーバでもインストールして利用することができます。
Smartyのインストール
下記のサイトからSmartyをダウンロードします。
http://www.smarty.net/download.php
上記のURLにブラウザでアクセスし、ソースのURLを確認後、wgetコマンドでサーバーのローカルにダウンロードします。
[root@centos ~]# wget http://www.smarty.net/do_download.php?download_file=Smarty-2.6.22.tar.gz ※Smartyアーカイブのダウンロード [root@centos ~]# tar xvzf Smarty-2.6.22.tar.gz ※アーカイブを展開
ソースをダウンロードして展開が完了したらPHPでinclude/require関数でアクセス可能なディレクトリへ移動します。
ここでは例として/var/www/html直下に移動します。
[root@centos ~]# mv Smarty-2.6.22 /var/www/html/smarty
Smartyでは、テンプレートなどを保存するディレクトリが必要となるので、この段階で生成しておきます。
[root@centos ~]# mkdir /var/www/html/smarty/templates ※テンプレート保存ディレクトリ [root@centos ~]# mkdir /var/www/html/smarty/templates_c ※コンパイル済みテンプレート保存ディレクトリ [root@centos ~]# mkdir /var/www/html/smarty/cache ※キャッシュディレクトリ
コンパイル、キャッシュの両ディレクトリには、Smartyが自動でファイルを生成するのでWebサーバのユーザに書き込み権限を与えます。
[root@centos ~]# chown -R apache.apache /var/www/html/smarty/templates_c [root@centos ~]# chown -R apache.apache /var/www/html/smarty/cache [root@centos ~]# chmod 775 /var/www/html/smarty/templates_c [root@centos ~]# chmod 775 /var/www/html/smarty/cache
これでディレクトリの準備は完了したので、簡単な動作チェックを行います。
ここではWebサーバのドキュメントルートが/var/www/html/public_htmlであると仮定し、smarty_test.phpというロジックを実装するスクリプトと、smarty_test.tplというデザインを定義するテンプレートファイルを作成してみます。
smarty_test.phpは/var/www/html/public_html直下に、smarty_test.tplは/var/www/html/smarty/templates直下にそれぞれ配置します。
<?php
/**
* smarty_test.php
*/
// Smartyパス設定
define('SMARTY_PATH', '/var/www/html/smarty/');
define('SMARTY_TEMPLATES_DIR', SMARTY_PATH . 'templates/');
define('SMARTY_COMPIlE_DIR', SMARTY_PATH . 'templates_c/');
define('SMARTY_CACHE_DIR', SMARTY_PATH . 'chache/');
// インスタンス生成
require_once(SMARTY_PATH . 'libs/Smarty.class.php');
$objSmarty = new Smarty();
// ディレクトリの指定
$objSmarty->template_dir = SMARTY_TEMPLATES_DIR;
$objSmarty->compile_dir = SMARTY_COMPIlE_DIR;
$objSmarty->cache_dir = SMARTY_CACHE_PATH;
// テンプレート変数の設定
$objSmarty->assign('message', 'Hello World!');
// テンプレート出力
$objSmarty->display('smarty_test.tpl');
<html>
<head>
<title>Smarty Test</title>
</head>
<body>
{$message}
</body>
</html>
ファイルの配置完了したら、ブラウザからsmarty_test.phpにアクセスします。
"Hello World!"と出力されればSmartyは正常に動作しています。

この記事へのコメント
まだコメントは投稿されていません。