konekto Inc with PHP , MySQL コネクト株式会社 技術情報コンテンツ


PHPアプリケーション/Smarty

様々なテンプレートエンジン

テンプレートエンジンの選択肢

PHPには、数多くのテンプレートエンジンが存在する。
それぞれが派生したプロジェクトではなく、全くコンセプトやテンプレートの記述ルールが異なるものばかりである。 その中から幾つか、例を挙げてみよう。

他にも、探せばまだまだ存在するので、興味がある人はGoogleやYahoo!などの検索エンジンを使って探してみて欲しい。

この記事では、大規模なWebアプリケーションの事例も存在するSmartyを取り上げる。

Smartyを選んだ理由

今回、Smartyを選んだのには、次の2つの理由がある。

筆者が一番精通しているテンプレートエンジンである
筆者がPHPアプリケーションを開発する際に必ず利用しているのが、このSmartyである。
古くから利用している上に、Smartyを活用するために幾度かソース(PHPスクリプト)を解析した経験があるため、というのが大きな理由である。
活用事例が多い
国内で最も大きな活用事例として、楽天が上げられる。
楽天が提供するサービスのうち約半数がPHPで開発されており、その大半がSmartyを使用しているという。大規模なWebアプリケーションでも実用されている点に注目した。

導入の前に

PHPのサーバ事情

日曜プログラマから本職のエンジニアまで、様々な人がPHPでアプリケーションを開発している。 企業ではない限り、一般的には共有型のレンタルサーバを借りて運用しているはずである。

Webアプリケーションの実行環境を構築する際に、ソースコードからコンパイルし直す必要があるものや、root権限でインストールする必要のあるものは少なくない。 もし、Smartyがそのようなアプリケーションであれば、1台まるまるレンタル契約をしている人や、自宅でサーバを運用している一部の人しか恩恵を受ける事ができなくなってしまう。

だが、安心して欲しい。 Smartyは全てPHPで作成されたライブラリであるため、PHPが使えるサーバであれば、どこにでもインストールして利用することが可能である。

Smartyの有無を調べる

とりあえず、下記のスクリプトをWebサーバ上にアップロードし、Webブラウザでアクセスしてみて欲しい。

<?php

@include('Smarty.class.php');

if (
class_exists('Smarty')) {
    
$smary =& new Smarty;
    
printf("you can use Smarty(version %s).\n"$smary->_version);
} else {
    echo 
"you can't use Smarty.\nplease install Smarty library.";
}

?>

次のメッセージが表示されたら、Smartyは既にインストールされている事になる。

you can use Smarty(version X.XX).

但し、Smartyのバージョンが極端に古い場合なども有り得るため、もし最新のバージョンではなかった場合は、自分でインストールする事をお奨めしておく。

残念ながら、次のメッセージが表示された場合は、自分でインストールする必要がある。

you can't use Smarty. please install Smarty library.

インストールの流れ

ダウンロード

Smartyのアーカイブは、http://www.smarty.net/downloadから入手する。

Latest Stable Releaseの下にある"Smarty X.X.X Source"のリンクをクリックするとダウンロードできる。
この記事を執筆している平成17年3月14日現在での最新バージョンは2.6.7である。

解凍

ダウンロードしたアーカイブは、tar+gzip形式で圧縮されている。
LinuxやBSD系のOSではtarコマンドが用意されているが、Windows等のOSでは標準でtar形式のアーカイブに対応していない。 自分のPCに合ったtar形式に対応したアーカイバを探し、インストールする必要がある。 tar形式のアーカイブに対応した解凍ツールを持っていない場合は、窓の杜ベクターで探すと良いだろう。

インストール

解凍が終わったら、利用したいサーバ上にアップロードする必要がある。
Smartyのインストールは、PHPでinclude/require関数でアクセス可能なディレクトリ*1にアップロードするだけで完了である。

どこにアップロードすれば良いのか判断に迷うのであれば、ホームディレクトリ*2の下にsmarty/というディレクトリを作成し、その中に下記のファイルをコピーすれば良い。

  • core/ ディレクトリおよびディレクトリ内の全てのファイル
  • plugins/ 〃
  • Config_File.class.php
  • debug.tpl
  • Smarty.class.php
  • Smarty_Compiler.class

ファイルのコピーが完了したら、次はテンプレートのキャッシュを置くためのディレクトリを用意する必要がある。
どこに用意すれば良いのか判断に迷うのであれば、Smartyをコピーしたディレクトリの下にtpl_c/というディレクトリを作成すると良いだろう。

インクルードパスの追加

最後に、PHPの include/require 関数で読み込めるように、インクルードパスを追加しよう。
下記サンプルの"/var/www/html/smarty"の部分を、Smartyの"Smarty.class.php"スクリプトが存在するディレクトリに修正し、実行してみて欲しい。

<?php

set_include_path
('/var/www/html/smarty:' get_include_path());

@include(
'Smarty.class.php');

if (
class_exists('Smarty')) {
    
$smary =& new Smarty;
    
printf("you can use Smarty(version %s).\n"$smary->_version);
} else {
    echo 
"you can't use Smarty.\nplease install Smarty library.";
}

?>

前述のサンプルと同じように、Smartyの有無が判るはずである。
Smartyの有無とバージョンを確認し、正しくインストールが行えているか、自分がインストールしたSmartyのバージョンと合っているかを確認してみよう。

次回予告

次回は、Smartyを使ったアプリケーションの作成方法について解説する。 また、幾つかSmartyのTIPSを紹介したいと思う。


*1 セーフモードが有効になっている場合、特定ディレクトリにしかアクセスできないので注意
*2 FTPで接続した際に最初に表示されるディレクトリ

添付ファイル: filesmartycheck.php 4777件 [詳細]
fileset_include_path.php 3374件 [詳細]

最終更新のRSS