Smartyのクラス変数は、結構あるのでSmartyを使う度に設定するのは、煩わしい気もします。
設定が面倒だ...
<?
require_once './smarty/Smarty.class.php';
$smarty = new Smarty();
$smarty->template_dir = './smarty/templates';
$smarty->compile_dir = './smarty/templates_c';
$smarty->cache_dir = './smarty/cache';
$smarty->config_dir = './smarty/configs';
$smarty->security = true;
$smarty->caching = 1;
以下続く
Smartyを使いなれてくると設定するパラメータも限られてくるので、サブクラスを作成して、これらの設定をまとめた方が便利になるかと思います。
サブクラス作成時に必要と思われる、Smartyのクラス変数を一覧にしてまとめてみました。
変数名 |
意味 |
$template_dir |
デフォルトのテンプレートディレクトリ名です。初期値は./templates このディレクトリをwebサーバのドキュメントルート下に設定する事を推奨しません。 |
$compile_dir |
コンパイルされたテンプレートが置かれるディレクトリです。初期値は./templates_c このディレクトリをwebサーバのドキュメントルート下に設定する事を推奨しません。 |
$config_dir |
設定ファイル を置くディレクトリです。。初期値は./configs このディレクトリをwebサーバのドキュメントルート下に設定する事を推奨しません。 |
$debugging |
デバッギングコンソール を有効にします。 |
$autoload_filters |
全てのテンプレート呼出し時に適用したいフィルタがある場合、この変数に指定するとSmartyはそれらを自動的に読み込みます。 |
$compile_check |
値がTRUEならば、テンプレートをチェックし、タイムスタンプが新しければコンパイルを行ないます。初期値はTRUEです。 |
$force_compile |
テンプレートが呼び出される毎に強制的にコンパイルを行います。 この設定は、$compile_check をオーバーライドします。 |
$caching |
テンプレートの出力を $cache_dir にキャッシュするかどうかを設定します。
- 0 をセットした場合、キャッシュは無効です。
- 1 をセットした場合、キャッシュが期限切れかどうかを調べるために、 現在の時間と $cache_lifetime の値を比較するように指示します。
- 2 をセットした場合、キャッシュが生成された時点の時間と $cache_lifetime の値を比較するように指示します。
|
$cache_dir |
テンプレートのキャッシュが格納されるディレクトリです。初期値は./cache |
$cache_lifetime |
テンプレートのキャッシュの期限(単位:秒)。これが切れるとキャッシュは再生成されます。初期値は3600秒です。
- $cache_lifetimeを使用するには、 $cachingを有効にする必要があります。
- -1 にすると、キャッシュを無期限で有効とします。
- 0 にすると、キャッシュを常に再生成します
|
$cache_modified_check |
クライアントから送信された If-Modified-Since ヘッダを尊重します。
キャッシュファイルが変更無い場合、304: Not Modified レスポンスが返されます。
これは、キャッシュされた内容に{insert}タグが無い時に機能します。
|
$security |
TRUEまたはFALSEとなり、デフォルトはFALSEです。これは、テンプレート言語によってシステムのセキュリティが脆弱になる危険性を減らしたい場合に最適です。 |
$secure_dir |
セキュアであるとみなすローカルファイルやディレクトリを格納する配列です。 |
$security_settings |
$securityが有効な場合に、セキュリティ設定の指定やオーバーライドを行います。 |
$left_delimiter |
テンプレート言語の開始を表すデリミタです。初期値は{ です。 |
$right_delimiter |
テンプレート言語の終端を表すデリミタです。初期値は} です。 |
$compile_id |
コンパイルファイルを識別するためのid |
$use_sub_dirs |
TRUEに設定すると、テンプレートディレクトリとキャッシュディレクトリの下にサブディレクトリを作ります。 |
Smartyの自分用クラスとして、MySmarty.class.phpを作成してみました。
MySmarty.class.php
<?
include_once './class/Smarty/Smarty.class.php';
class MySmarty extends Smarty {
function MySmarty($dir="") {
$this->Smarty();
$this->security = true;
$this->caching = 1;
$this->cache_dir = './tmp/cache';
$this->compile_id = md5(getcwd());
$this->compile_dir = './tmp/template_c';
$this->left_delimiter = '{';
$this->right_delimiter = '}';
if($dir == "")
$this->template_dir = "./templates/";
else
$this->template_dir = $dir;
$this->assign("TITLE","Smarty Tips");
}
}
あとは、MySmartyを生成して使うだけです。コンパイル ディレクトリなどが変更になった場合でも、MySmarty.class.phpを修正するだけでOKです。
<?
require_once './MySmarty.class.php';
$Smarty = new MySmarty();
$Smarty->assign('title', 'Hello Worldの表示');
$Smarty->assign('contents', 'Hello World');
$Smarty->display('hello.tpl');
?>
多少プログラムもすっきりしました。