クイックスタート

クイックスタート

まず、SimpleTemplateを使用するための簡単な例を下記に示します。

【ディレクトリ】
/┳index.php
 ┣SimpleTemplate.class.php
 ┣templates
   ┣some.tpl
 ┣cache
【PHPファイル】index.php
<?php
// SimpleTemplateのインクルード
require_once 'SimpleTemplate.class.php';

// テンプレートオブジェクトの作成
$template = new SimpleTemplate();
// テンプレートファイル格納ディレクトリの指定
$template->template_dir('./templates');
// テンプレートファイル記述エンコーディングの指定
$template->setTplEncoding('UTF-8');
// 出力エンコーディングの指定
$template->setOutputEncoding('UTF-8');

// 変数の設定
$someVariable = '初めてのSimpleTemplate!';

// テンプレート変数の割り当て(アサイン)
$template->assign('someValue', $someVariable);

// テンプレートファイルの表示(ディスプレイ)
$template->display('some.tpl');
?>
【テンプレートファイル】some.tpl
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>SimpleTemplateクイックスタート</title>
</head>
<body>
  {$someValue}
</body>
</html>
【出力】
初めてのSimpleTemplate!

PHPファイルでの記述の概要を説明すると以下のようになります。
まず、①SimpleTemplateクラスを利用するためにSimpleTemplate.class.phpをインクルードします。
②SimpleTemplateクラスのインスタンスを作成して、クラスメソッドを利用する準備をします。
③template_dirメソッドにてテンプレート格納ディレクトリを指定します。
※絶対パス・相対パスによる指定が可能です。
④setTplEncodingメソッドにてテンプレートの記述エンコーディングを指定します。
※テンプレートファイルのエンコーディング以外のエンコーディングを指定すると文字化けの原因となります。
⑤setOutputEncodingメソッドにて出力エンコーディングを指定します。
⑥PHPコード内で使用する変数を設定します。
⑦テンプレート変数を割り当てます。
この時、「$template->assign('someValue', $someVariable);」とした場合、テンプレートファイルでは「someValue」の頭に$(ドルマーク)を付けて、波カッコで囲みます({$someValue})。
⑧最後に「display」メソッドにて表示したいテンプレートファイルをディスプレイします。

テンプレートファイルでは、展開したいテンプレート変数を記述します。
そして、「template_dir」メソッドにて指定したテンプレート格納ディレクトリに格納しておきます。
上記の例のように、PHPファイルで割り当てたテンプレート変数識別子(例:someValue)の頭に$(ドルマーク)を付けて、波カッコで囲みます({$someValue})。
そうすると、PHPファイルで割り当てた変数値が展開されて、「display」メソッドにてテンプレートファイルを表示した際に、テンプレート変数がPHPファイルで割り当てた変数値に置き換わります。

以上がSimpleTemplateの基本的な使用法となります。
PHP自体がHTMLファイルの中に埋め込むことが出来る言語であることから、ちょっとしたシステム(アプリケーション)であればHTMLファイルにPHPコードを記述することで短期間にシステムを構築するこが出来ます。
しかし、一定規模以上のコードを有するシステムとなると、HTMLの中にPHPコードを記述するとその保守は困難を極めます。そこで、システムロジックとデザイン(表示)を分離し、ロジックはロジックとして管理・保守し、デザイン(表示)はそれとは別に管理することで、システムの保守性を向上させ、また構築を容易にすることが出来ます。
SimpleTemplateはPHPコードでの変数をテンプレートファイルで展開・表示する機能を中心に、それに付随する機能を実装したテンプレートエンジンです。機能的には非常にシンプルですので、中~小規模のシステム構築で使用して頂けると、ちょうど良い組み合わせとなるでしょう。

キャッシュ機構

SimpleTemplateは、キャッシュ機構を採用しております。
SimpleTemplateでは、テンプレートファイルに記述されている構文を処理し、ブラウザへ出力をしますが、ブラウザからのリクエストがある度にパースをすると、テンプレートファイルの文字数が多い場合や、記述構文が多い場合には、パフォーマンス低下の原因となります。
そこで、ver.1.1.0にて、キャッシュ機構を実装致しました。

以下に示しすように、①cache_dirメソッドにてキャッシュディレクトリを指定し、②useCacheSystemメソッドにて使用するに設定すると、指定キャッシュディレクトリにキャッシュファイルを生成致します。
キャッシュファイルは、①アサイン変数の値と、②全構文処理を施したHTMLファイルを合わせたテキストファイルです。
キャッシュファイルの生成後に、指定したテンプレートファイルのいずれかを更新していない場合には、キャッシュファイルがそのままブラウザへレスポンスされます。いずれかのテンプレートファイルを更新した場合には、全てのテンプレートファイルをパースし直してキャッシュファイルを生成した上で、構文処理済みのHTMLをブラウザに返します。
また、テンプレートファイルに更新がない場合でも、アサイン変数の値に変更がある場合には、全構文処理を施した上で、構文処理済みのHTMLをブラウザに返します。

上記のようなキャッシュの仕組み上、初回のリクエストの場合には、キャッシュファイル生成のオーバーヘッドが発生致します。
また、アサインする変数がリクエスト毎に変更するアプリケーションの場合で、キャッシュ機構を有効にすると、リクエスト毎にキャッシュファイルの生成オーバーヘッドが発生しますので、さらにレスポンスは低下します。
ですので、アサインする変数があまり変更されないアプリケーションでキャッシュ機構を使用するとパフォーマンスの向上が図れると言えます。

なお、キャッシュファイルが存在すれば、テンプレートファイルが存在しない場合でも、キャッシュファイルをブラウザに返す仕様となっております。
また、useCacheSystemメソッドのパラメータは、①論理値、②数値型、③文字列型を使用することが出来ます。パラメータ値の評価(true,false)はPHPの言語文法に従います。例えば、0以外の数値であれば「true」と評価されますし、空文字('')の文字列は「false」として評価されます。※詳しくは公式ドキュメントをご参照ください。>>PHPドキュメント

【PHPファイル】
<?php
// SimpleTemplateのインクルード
require_once 'SimpleTemplate.class.php';

// テンプレートオブジェクトの作成
$template = new SimpleTemplate();
// テンプレートファイル格納ディレクトリの指定
$template->template_dir('./templates');
// キャッシュファイル格納ディレクトリの指定
$template->cache_dir('./cache');
// キャッシュ機構を使用するかの設定
$template->useCacheSystem(true);
// テンプレートファイル記述エンコーディングの指定
$template->setTplEncoding('UTF-8');
// 出力エンコーディングの指定
$template->setOutputEncoding('UTF-8');

// 変数の設定
$someVariable = '初めてのSimpleTemplate!';

// テンプレート変数の割り当て(アサイン)
$template->assign('someValue', $someVariable);

// テンプレートファイルの表示(ディスプレイ)
$template->display('some.tpl');
?>