Tips

Smarty(テンプレートエンジン) ~インストール編~ 第2回

Smartyのインストール その2

アプリケーションのディレクトリ構成の作成

Smartyを使ったアプリケーション用のディレクトリ構成を作成します。
まず、Smartyで使用するパスの設定です。Smartyでは以下の4種類のパスを使用します。

・テンプレートディレクトリ
・コンパイルディレクトリ
・設定ファイルディレクトリ
・キャッシュディレクトリ

①これらのディレクトリを以下のような構成で作成します。

1

コマンドは、次のとおりです。

1
2
# cd /usr/local/apache2/htdocs
# mkdir -p webapp/{templates,templates_c,configs,cache}

②所有者権限および所有者グループを変更します。

1
# chown -R apache.apache webapp

③パーミッションの変更を行います。

1
# chmod -R 700 webapp/{templates_c,cache}

④Smarty環境の初期化用のファイル「common.php」を作成します。

1
# vi webapp/common.php

・common.phpの内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?
// Smartyライブラリを読み込みます
require('Smarty/Smarty.class.php');
 
// Smartyの拡張クラス
class Smarty_App extends Smarty {
 
    // クラスのコンストラクタ。
    function __construct() {
        // これらは新しいインスタンスで自動的にセットされます。
        parent::__construct();
 
        // テンプレートファイルを置くディレクトリ ( デフォルトは ./templates )
        $this->template_dir = 'templates/';
        // コンパイルされたテンプレートが置かれるディレクトリ ( デフォルトは ./templates_c )
        $this->compile_dir  = 'templates_c/';
        // テンプレート用の設定ファイルを置くディレクトリ ( デフォルトは ./configs )
        $this->config_dir   = 'configs/';
        // テンプレートのキャッシュが格納されるディレクトリ ( デフォルトは ./cache )
        $this->cache_dir   = 'cache/';
 
        // テンプレートの強制コンパイルの指定( デフォルトは 強制コンパイルしない )
        $this->force_compile = true;
 
        $this->caching = 2;
 
        // 有効時間が600秒に
        $this->cache_lifetime = 600;
    }
}

テンプレートファイルの作成

テンプレートファイルを作成します。
テンプレート自体にも制御構造などを記述することも出来るようですが、基本は画面に表示するためのHTMLやXHTMLなどを記述します。
テンプレートファイルの拡張子は、慣例として「.tpl」を使用します。「webapp/templates/」ディレクトリ内に「sample.tpl」を作成します。

1
# vi webapp/templates/sample.tpl

・sample.tpl

1
2
3
4
5
6
7
8
9
10
<html>
    <head>
        <title>Smarty Test</title>
    </head>
    <body>
 
    <h1>{$msg}</h2>
 
    </body>
</html>

プログラムファイルの作成

続いてプログラム側のファイルを作成します。プログラム側ではテンプレートに渡す値を作成したり、最終的にテンプレートを呼び出して画面に表示させたりします。
プログラムは次のようになります。

1
# vi webapp/sample.php

・sample.php

1
2
3
4
5
6
7
8
9
<?
// セットアップ
require('common.php');
 
// 設定ファイルを読み込み
$smarty = new Smarty_App();
 
$smarty->assign('msg','Hello World!');
$smarty->display('sample.tpl');

アプリケーションの実行

PHP+Smartyのアプリケーションを実行してみます。
配置した「sample.php」へアクセスしてみます。

http://(IPアドレス)/webapp/sample.php

次のように画面が表示されれば、成功です。

1

コンパイルされたテンプレートファイル

テンプレートファイルが最初に使用されるとコンパイルされたテンプレートファイルが作成され「templates_c」ディレクトリ内に設置されます。二回目以降はコンパイルされたテンプレートファイルが使用されることで高速に実行することが出来るようになっています。

なお、テンプレートが変更されると改めてコンパイルが行われてコンパイル済みのテンプレートが作成されます。

1

キャッシュの利用

Smarty のデフォルトでは、キャッシュはオフになっています。キャッシュを有効にすると出力は、キャッシュされた内容をそのまま使いますので、display() 又は fetch() を呼び出す速度を短縮できます。
ただし、動的コンテンツの場合は、キャッシュする時間の設定には注意が必要です。更新間隔より長いキャッシュ時間を設定すると、情報が古く役に立たなくなります。

①キャッシュの有効化。
キャッシュを有効にするには、次のように caching に true(又は 1)を設定します。

1
$smarty->caching = true;

デバック時などは、$caching に false(又は 0 )を設定しキャッシュを無効にします。$caching = 2 を設定すと、個々のキャッシュ毎に個別にキャッシュ時間を与える事ができます。

②キャッシュごとに生存時間を設定。
現在のキャッシュの生存時間は、 display がコールされるごとに残ります。
キャッシュの生存時間を設定するには、次のように、setCacheLifetimeに秒単位で指定します。

1
2
// 5分
$smarty->setCacheLifetime(300);

③キャッシュの無効化。
キャッシュ機能を無効にするには、次のように setCompileCheck を設定します。

1
$smarty->setCompileCheck(false);

④有効なキャッシュのチェック。
テンプレートが有効なキャッシュを持っているかどうかを調べるのに、isCached()を設定します。

1
$smarty->isCached();

⑤キャッシュのクリア。
個々のキャッシュファイル (そしてグループ) をクリアするには、clearAllCache()を設定します。

1
$smarty->clearAllCache();

WEBアプリケーション関連 人気連載リンク

基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載

より実践的なWEBアプリ開発講座!Bootstrap活用を学ぶなら・・
魁!小野の塾 連載

Recent News

Recent Tips

Tag Search