レガシーなPHPのコードは、ビューとロジックのコードが入り交じり書いてる時は、いいけど後で手直ししようとした時に萎える
そこで最近見つけた「smarty」というPHPのテンプレートエンジンをインストールしてみた。テンプレートエンジンというのは、簡単に言えばスタティックなHTMLのコードの中にロジックの結果(変数)を埋め込むという物。
さっそくインストール、公式サイトからDLも出来るけど今回は、portsからインストールする。
cd /usr/ports/www/smarty3/
make config-recursive
make
make install clean
これでインストールは完了。さっそくサンプルを作ってみる。
まずは、必要なディレクトリを作成します。作成する場所は、適宜ですが今回はViewのコードを置く場所。
mkdir templates // 後に作成するテンプレートファイル(tpl)を入れます。
mkdir templates_c // PHPバイナリが置かれます
mkdir configs // 設置データを置く? 今回は必要ありません?!
mkdir cache // キャッシュデータが置かれます
次にテンプレート。
index.tpl
1 <html>
2 <head>
3 <title>{$gSiteTitle}</title>
4 </head>
5 <body>
6 <h1>{$gSiteTitle}</h1>
7 </body>
8 </html>
今回は、実にシンプルに変数の値を埋め込むのみ。$gSiteTitleの部分にPHPで計算/処理した結果が入る。
次にコントローラ。
1 <?php
2 require_once(dirname(__FILE__). '/../LocalSettings.php');
3 require_once("$GLOBALS[gSmartyDir]/Smarty.class.php");
4
5 class Index{
6
7 //function index(){
8 function base(){
9 $view = new Smarty();
10 $view->template_dir = "./view/templates";
11 $view->compile_dir = "./view/templates_c";
12 $view->config_dir = "./view/configs";
13 $view->cache_dir = "./view/cache";
14 $view->assign("gSiteTitle", $GLOBALS['gSiteTitle']);
15 $view->display("index.tpl");
16 }
17 }
18 ?>
9行目でsmartyのインスタンスを生成して、10-13行目で先ほど作成したディレクトリのパスをプロパティにセットしてます。
14行目で外部ファイル(LocalSettings.php)で定義されているグローバル変数(gSiteTitle)をテンプレート内の変数にアサインしています。そして、15行目で実際に描画しています。
今回は、ここまで。本当は、テーブルを格納した配列をテンプレートファイル内でforeachでまわして出力等も出来るみたいだけどまた今度ということで。。。
0 件のコメント:
コメントを投稿