テンプレートエンジン サンプルテンプレート
tmpl: = テンプレートエンジン コマンドヘッダ(半角英小文字のみ)
% = 変数記号(任意の記号に変更可)
comment/endcomment = コメントブロック
command/endcommand = コマンドブロック
ifdef/ifundef/else/endif = 条件分岐(変数定義)
if(条件)/else/endif = 条件分岐(式[==,<,>,<=,>=,!=]の結果が真
の時直後のブロックを表示)
loop/endloop = ループ
block %モジュール名:ブロック名% ブロック
include "ファイル名 = インクルード
cmd_ = ユーザー定義コマンド
変数
%&name% = グローバル(ループ内でも有効)
%name% = ローカル(ループ内外互換なし)
※コマンド、変数名は半角英数字と"_"
※blockについて
テンプレートエンジンが行う事は、プリプロセッサで変数(モジュール名:ブロック
名)をキーにした空の配列を作成し、出力処理時に配列の各要素を該当する行に置
換するのみです。各ブロックの出力生成はプリプロセッサから出力までの間に外部
で行って下さい。
※includeについて
プリプロセッサで置換が行われるため、変数の置換等も元ファイルと同様に行われ
ます。
インクルードするファイルに<body>タグが含まれる場合、実際にインクルー
ドされるのは<body>タグの内側のみになります。
※ユーザー定義コマンドについて
cmd_(任意の文字列)が付いたコマンド行を読み込んだ時点で、以下の通り任意名前
のメソッドを実行します。
・プリプロセッサ
pre_cmd_(任意の文字列)
・出力処理時
cmd_(任意の文字列)
関数はテンプレートエンジンクラスを継承したクラスに実装して下さい。
プロパティは
$this->_tmpldata --- テンプレート配列(1行1要素)
$this->_pointer --- テンプレートのポインタ
test1 = 1
test2 = 0
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja-JP">
<head>
<base href="http://www.asobicreate.com/">
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="description" content="神奈川県相模原市のWEBシステム制作、アソビ・クリエイトのオフィシャルWEBページ">
<meta name="keywords" content="PHP,MySQL,携帯サイト,WEBアプリケーション,WEBシステム,企画,制作会社,製作会社,開発会社">
<title>SEO対応WEBサイト制作、開発、製作/アソビ・クリエイト/神奈川県相模原市</title>
</head>
<body>
<h1>ローカル変数</h1>
index=%index%/index2=%index2%<br>
test1=%test1%/test2=%test2%<br>
<h1>フラグのテスト</h1>
f_test1が立っている時<br>
f_test1が寝ている時<br>
f_test2が寝ている時<br>
f_test2が立っている時<br>
f_test1が立っていてf_test2が寝ている時<br>
f_test1が立っていてf_test2が立っている時<br>
f_test1が寝ていてf_test2が寝ている時<br>
f_test1が寝ていてf_test2が立っている時<br>
test1が1の時<br>
test1が1以外の時<br>
<h1>ループのテスト</h1>
<h2>%index%</h2>
<h3>%index%-%index2%</h3>
f_test1が立っている時<br>
f_test1が寝ている時<br>
f_test2が寝ている時<br>
f_test2が立っている時<br>
f_test1が立っていてf_test2が寝ている時<br>
f_test1が立っていてf_test2が立っている時<br>
f_test1が寝ていてf_test2が寝ている時<br>
f_test1が寝ていてf_test2が立っている時<br>
</body>
</html>