WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

Smartyのインストール

      2012/12/12

Smartyとは?

SmartyはPHPアプリケーションで利用されるテンプレートエンジンです。

PHPでは、HTMLの中に<?php ~?>タグを埋め込むことで手軽にロジックを実装することができますが、複雑なコードを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直下にそれぞれ配置します。

smarty_test.php
<?php echo '<?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');
smarty_test.tpl
<html>
<head>
<title>Smarty Test</title>
</head>
<body>
{$message}
</body>
</html>

ファイルの配置完了したら、ブラウザからsmarty_test.phpにアクセスします。
“Hello World!”と出力されればSmartyは正常に動作しています。

 - PHP , , , , ,