2007年12月2日日曜日

PHPTAL

PHPTAL

●インストール

PHPTAL の最新版は以下の PEAR コマンドを使ってインストール/アップグレード可能

pear install http://phptal.motion-twin.com/latest.tar.gz
pear upgrade http://phptal.motion-twin.com/latest.tar.gz

バージョンを指定してインストールしたい場合は以下のように行える

pear install http://phptal.motion-twin.com/files/PHPTAL-1.1.9.tar.gz
pear upgrade http://phptal.motion-twin.com/files/PHPTAL-1.1.9.tar.gz

自分は ZendFramework に組み込むことを目的としているので、PEAR でのインストールは使い
ませんでした。最新版ののファイルをDL・解凍し、PATH の通ったところに設置するだけでOKです。

*Example
tar zxvf PHPTAL-1.1.9.tar.gz
cp -r PHPTAL-1.1.9/PHPTAL* /path/to/php/incluede/folder

●TAL(Template Attribute Language)の記述方法
・属性の優先順位
どの順番で属性を宣言しても問題ない。TALの仕様と同様以下のような優先度になる。
1.define
2.condition
3.repeat
4.content or replacea
5.attributes
6.omit-tag

・TAL namespace での各属性の使い方。
1.tal:define
・変数の定義をする。
tal:define="[local | global] name expression [; define-expression...]"

local : 宣言したタグとそのタグの内側にあるタグでのみ有効な変数になる。
global : 宣言以降そのテンプレート内で有効な変数になる。
name : 変数名
expression : 変数の値

2.tal:condition
・条件命令
tal:condition="expression"
expression : expressionが偽の場合、記述されたタグとその内側のタグを出力しません。

3.tal:repeat
・繰り返し構文
tal:repeat="name expression"
expression : シーケンス型を渡した場合、記述されたタグとその子要素をシーケンスの
各要素ごとに一度ずつ繰り返する。
name : 現在繰り返し処理している要素の値が設定される。

TAL Path式 を使って repeat/name という名前で繰り返し変数の名前にアクセスできる。
また、繰り返し変数には以下のプロパティがあり、 repeat/name/Property でアクセスできる。
index : 繰り返しの回数を 0 から数えた値
number : 繰り返しの回数を 1 から数えた値
even : 繰り返しが偶数回目の場合に真
odd : 繰り返しが奇数回目の場合に真
start : 現在の要素がシーケンスの最初の要素である場合に真
end : 現在の要素がシーケンスの最後の要素である場合に真シーケンスがイテレータ型の場合には必ず偽.
length : シーケンスの長さです.シーケンスがイテレータ型の場合,長さが分からないので,値は maxint になる.
key : シーケンスのキーを返す。

4.tal:content
・記述したタグで囲まれた部分を expression で置き換える
tal:content="[text | structure] expression"
text : 必要に応じてエスケープして出力される
structure : エスケープせずに出力

5.tal:replace
・記述したタグで囲まれた部分をタグも含め expression で置き換える
tal:content="[text | structure] expression"
text : 必要に応じてエスケープして出力される
structure : エスケープせずに出力

6.tal:attributes
・記述したタグの属性を設定する。nothing の場合はその属性を削除する。
default の場合は記述されている属性をそのまま出力する。
「;」区切りで複数記述することができる。属性に「;」が必要な場合「;;」と記述する必要がある。
tal:attributes="name expression[;attributes-expression]"
name : 属性名
expression : 属性の値

7.tal:omit-tag
・タグの消去
tal:omit-tag="expression"
expression : 値が真の場合、記述されたタグのみを除去する。空でも真になる。


8.tal:on-error
・エラー、例外処理
tal:on-error="expression"
パスエラーが発生した場合や、例外を受け取った場合には、タグの中身をexpressionに置き換える。


●METAL(Macro Extension for TAL) namespace について
1.metal:define-macro
・マクロの宣言
metal:define-macro="name"
name : マクロの名

2.metal:use-macro
・マクロの呼び出し
metal:use-macro="expression"
expression : マクロの名 もしくは 「ファイル名/マクロ名」

3.metal:define-slot="name"
・マクロ内の動的内容の指定、fill-slotで指定された要素内を置き換える。
define-macroを持つ要素の中のみ存在可能
metal:define-slot="name"
name : スロット名

4.metal:fill-slot="name"
・マクロ内の動的変更可能要素の指定、define-slotで指定した値に置き換える。
define-macroを持つ要素の中のみ存在可能
metal:fill-slot="name"
name : スロット名


●I18N namespace(国際化) について
1.i18n:translate
2.i18n:name

●PHPTAL namespace
TAL仕様の拡張。PHPTAL専用
1.phptal:debug
2.phptal:tales

●*:block
たくさんのTAL属性を含んでたり、繰り返し使う場合にいいみたい。


●PHPTALES
path:
Conditional statements
string:
php:
not:
exists:
default
structure
Expression chains


●TALES(TAL Expression Syntax)について

TALESの型
path - パスで値を指定する
exists - パスが存在するかテストする
nocall - パスでオブジェクトを指定する
not - 式の否定です
string - 文字列を整形する
組み込みの名前



●Zend Frameworkへの組み込み


TODO
Zend_View_Phptal的なものの作成
テンプレートの拡張子って何がいいんだろ考える
I18N namespace以下のテンプレート側の機能の調査
テンプレート側の機能のExampleを作成。


参考にしたサイト
TAL ガイド
PHPTAL マニュアル