Smartyとはオープンソースにて提供されているPHPで最も普及しているテンプレートエンジンです。
PHPでは手軽にHTMLの中に動的に要素を埋め込むことが可能ですが、PHPでの記述処理が複雑になればなるほどPHP 記述箇所がバラバラに分離されてしまい、収集がつかなくなる事があります。
昨今のオープン/WEB系システム構築においてJava/.NET(Visual Studio2005からは.NETというサフィックスがなくなっています)で開発 する場合、画面デザイン(HTML)とプログラミング(ビジネスロジック)は分離して開発するのが必然的な流れとなっています。
画面デザインはデザイナーがプログラミングは開発者がそれぞれの境界を分けて作成するのが開発効率もメンテナンスも格段にアップするはずです。
PHPでは、テンプレートエンジンという技術によってデザイン部分とロジック部分を分離させメンテナンスを向上させることができるようになりました。
この章ではテンプレートエンジンとして最も普及しているSmartyのインストール解説/活用方法を簡単ではありますが随時UPしていきたいと 考えております。


[Smartyのインストール]


Smartyのインストール/Smartyの動作確認

1) Smarty本体のダウンロード
Smarty本家サイトよりアーカイブファイルをダウンロードします。 最新バージョンはは2.6.13となっています(2006年5月現在)。ダウンロードファイル名はSmarty-2.6.13.tar.tarとなっています。 LHAのツールでも解凍出来ます。マニュアルもこのサイトで取得出来ますが、残念ながら日本語マニュアルはありません。
ここでで2.6.6のバージョンですが日本語 マニュアルが紹介されています。

2) 解凍後のフォルダのコピー
ダウンロードファイルを解凍すると[Smarty-2.6.13]フォルダとその中に各モジュール が展開されます。[Smarty-2.6.13]フォルダ名を[Smarty]にリネームしてこのフォルダ毎 PHPがセットアップされているc:\php\includesフォルダ配下にコピーして下さい。\includesフォルダ が存在しない場合はこのフォルダ名で作成します。

3) php.iniファイルの確認
c:\windows配下にあるphp.iniをエディタで開きます。
include_pathにc:\php\includesが設定されているか確認して、なければ追加して下さい。

4) htmlテンプレート用格納フォルダとhtmlテンプレートコンパイル後の格納フォルダの作成
smartyを活用するにあたりhtmlテンプレート格納フォルダを用意しておく必要があります。
またテンプレートを用いたhtmlを最初に開いたときにsmarty側で自動でテンプレートをコンパイルします。 2度目以降にこのhtmlファイルを開こうとした場合、コンパイル済のテンプレートファイルを参照します。 コンパイル後の格納フォルダも事前に作成しておく必要があります。ここでは下記の通り2つのフォルダを作成します。
フォルダ名
内 容
C:\Program Files\Apache Group\Apache2\htdocs\test\templates テンプレートファイルの格納
C:\Program Files\Apache Group\Apache2\htdocs\test\templates_c コンパイル済テンプレートファイルの格納

Smartyの動作確認

1) htmlテンプレートファイルの作成
下記のようにhtmlテンプレートファイルをエディタで作成します。拡張子はtplで 今回はsmarty_test.tplとします。作成後に前記で作成した\templates配下に配置します。
  <html>
  <head>
  <title>Smartyの活用</title>
  </head>
  <body>
    下記の文字列はphpの記述処理より取得しています。<br>
    <br>
    <b>[ {$php_str} ]</b><br>
    <b>[ {$php_msg1} ]</b><br>
    <b>[ {$php_msg2} ]</b><br>
  </body>
  </html>


2) PHPで処理を記述
下記のようにロジックをエディタで作成します。拡張子はphpで 今回はsmarty_test.phpとします。作成後にC:\Program Files\Apache Group\Apache2\htdocs\test配下に配置します。
  <?php

  //Smartyモジュールの取込み
  require_once("Smarty/libs/Smarty.class.php");

  //Smartyクラスの生成
  $tmpl = new Smarty();

  //テンプレート格納フォルダの指定
  $tmpl->template_dir = "templates/";

  //テンプレートコンパイル後の格納フォルダの指定
  $tmpl->compile_dir = "templates_c/";

  //テンプレートの$php_str変数に値を代入
  $tmpl->assign("php_str", "Smartyの活用!");

  //テンプレートのphp_msg1と2に連想配列として値を代入
  $tmpl->assign(array("php_msg1" => "連想配列の表示も出来ます!",
                                 "php_msg2" => "正しく表示されましたか?"
                                )
                         );

  //テンプレートファイルを読み込み、画面表示する
  $tmpl->display("smarty_test.tpl");

  ?>

3) 動作確認後の画面イメージ
2)で作成したsmarty_test.phpをブラウザから直接指定すれば下記の画面が表示されます!


Copyright (C)2006 TwoNess,inc. All rights reserved.