[PHP-users 2407] Re: PHPでカスタムタグ

naoki kishida php-users@php.gr.jp
Wed, 03 Oct 2001 02:50:30 +0900


きしだです
条件分岐に対応しておきました。つまり親子タグが実装できます。
これで、とりあえずどんなタグでも作ることができると思います。

ソースはここに置いておきます。ファイル構成は変わりありません。
つまりドキュメントなんか書いてない。。。
http://www.fk.urban.ne.jp/home/kishida/phptag/customtag.lzh
> customtag.inc カスタムタグのエンジン
> taglib.inc    とりあえずのタグライブラリ
> sample.php    サンプルプログラム
> template.html サンプルのテンプレート

サンプルの実行結果は
http://www.fk.urban.ne.jp/home/kishida/phptag/sample.html
です。右側には、そのテンプレートが表示されています。

タグの外側、タグの属性には通常のPHPプログラムが使えます。
逆にいえば、タグ自体をテンプレート内のPHPプログラムで生成することはできま
せん。
まじめに構文解析していないので、属性の中には=やスペースを使うことはできま
せん。<?=$i?>や<? echo $i?>ではなく<?echo($i)?>という風に記述する必要があ
ります。

taglib.incには次のようなタグを入れてあります。
タグを作るときにでてくるパターンはひととおり。
・単純な例
date:現在時刻をうめこむ
showsource:PHPソースファイルの読み込み
・タグに囲まれた部分を加工する
nl2br:改行コードを<br>に変換する
htmlspecialchars:HTML特殊文字を変換する
・グローバル変数の読み書き
copy:表示内容を変数にコピー
paste:変数の内容を表示
・繰り返し
loop:繰り返し
・親子タグ
switch:分岐
case:switchタグでの分岐条件
caseelse:switchタグでの分岐該当無し


というわけで、カスタムタグがないからPHPじゃなくてJavaがいいとは言えなくなっ
てしまいました。
カスタムタグの作成も、Javaの場合と違って、かなり楽です。
copy・pasteタグなんかは、結構いい感じです。上下に配置するナビゲーションの
ように、関数作るまでもないんだけど共通で、ソースコードをコピーペーストし
ていたのが解決です。

テンプレート処理の前に、表示に必要なデータをグローバル変数にぼこぼこ入れ
ておいて、表示自体はカスタムタグテンプレートでという感じで、PHPらしくまっ
たりとロジックとデザインの分離ができるんじゃないかと思います。

----
岸田 哉生(きしだ なおき)
	email:kishida@fk.urban.ne.jp
	http://www.fk.urban.ne.jp/home/kishida/