Smartyでテンプレートの場所を指定する方法
Smartyでテンプレートファイルの場所を指定するいい方法を教えてください。
公式マニュアルには基本的には(1)のようにやるのだと書いてあります。そして拡張セットアップとして(2)の方法が紹介されています。これなら「ディレクトリパスの設定を同じ変数に何度も割り当てる代わりに、一箇所でそれらを行う事が出来ます」とのことですが…。
しかし拡張セットアップの方法でも、プログラムファイル(.php)の中に環境依存の値を記述しています。私はJava開発の経験はあり、PHP開発の経験は無く、現在は趣味の範囲でPHPをやっています。
で、Javaの経験からすると、環境依存の値も設定ファイルのパスもプログラムファイルに書くことはまず無いので、(2)の方法でも気持ち悪く感じます…。また「ページを呼び出すたびに毎回setup.phpを呼ぶの?サーバー起動時に読み込むべき値・ファイルだろうが…」とも思ってしまいます。
…しかし私がどう感じるかは別として、実際の開発の現場ではどうすることが多いのか知りたくて質問をする事にしました。
質問は以下です。
[a]Smartyのテンプレートファイルのパスなどは、どこにどう書くことが多いのか?
[b]Smartyに限らず、PHPという言語では、環境設定の値や設定ファイルのファイル名やパスを、プログラムファイル(.php)に書くのがあたりまえなのか?どうすることが多いのか。
[c]PHPではプログラムで使う値として、サーバー起動時に設定値・設定ファイルを読み込む一般的な仕組みがあるか?(サーバー設定値でもないのにphp.iniに書いてini_getで取得するなんてことが許される?他にもっとスマートな方法がある?)
※具体的な例を挙げて教えていただけると助かります。また、「あまりやらないけど、こうやったこともあるよ」などというイレギュラーなケースも教えていただけるとうれしいです。
よろしくお願いします。
--(1)index.php---------------------------------------------
<?php
require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = '/web/www.example.com/guestbook/templates/';
$smarty->compile_dir = '/web/www.example.com/guestbook/templates_c/';
$smarty->config_dir = '/web/www.example.com/guestbook/configs/';
$smarty->cache_dir = '/web/www.example.com/guestbook/cache/';
$smarty->assign('name','Ned');
$smarty->display('index.tpl');
?>
-----------------------------------------------------------
基本的なインストール | Smarty
http://www.smarty.net/docs/ja/installing.smarty.basic.tpl
--(2)setup.php---------------------------------------------
<?php
require('Smarty.class.php');
class Smarty_GuestBook extends Smarty {
function __construct() {
parent::__construct();
$this->template_dir = '/web/www.example.com/guestbook/templates/';
$this->compile_dir = '/web/www.example.com/guestbook/templates_c/';
$this->config_dir = '/web/www.example.com/guestbook/configs/';
$this->cache_dir = '/web/www.example.com/guestbook/cache/';
$this->caching = Smarty::CACHING_LIFETIME_CURRENT;
$this->assign('app_name', 'Guest Book');
}
}
?>
--(2)index.php---------------------------------------------
<?php
require('guestbook/setup.php');
$smarty = new Smarty_GuestBook();
$smarty->assign('name','Ned');
$smarty->display('index.tpl');
?>
-----------------------------------------------------------
拡張セットアップ | Smarty
http://www.smarty.net/docs/ja/installing.smarty.extended.tpl