2007年12月7日金曜日

PHPTAL 残っているTAL関連の記述に関して。

残っているTAL関連の記述方法

マニュアルだけだと何を行っているのかわからないので、次からは実際に使ってみる。
英語力がないだけなのか・・・

●I18N namespace(国際化) について
I18N?:InternationalizatioN I と N の間には18文字あるから

こんな感じで呼び出すみたい。すぐにつかわないから設定ファイルについて
調べるのは保留。

$gettext = new PHPTAL_GetTextTranslator();
$gettext->addDomain($domain,$path);
$gettext->setEncoding($this->_encoding);
$phptal = new PHPTAL();
$phptal->setTranslator($gettext);

1.i18n:translate
2.i18n:name
3.i18n:attributes
4.i18n:domain
5.i18n:target


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

2.phptal:tales
この属性をもつタグに囲まれた部分は、TALES 方式ではなく 指定の方式で属性、要素
の内容を設定するように変更される。
指定できる方式は、tales と php のみで、デフォルトは talesになる。

<table phptal:tales="php">
<tr tal:repeat="myobject document.getChildren()">
<td
tal:content="myobject.mymethod()[10].otherMethod()['hashkey']"></td>
</tr>
</table>

3.phptal:cache
指定時間HTML要素をキャッシュする。時間は数字に以下の4つのどれかをつけ'd', 'h', 'm' or 's'
指定する。
基本的にそのページの共有キャッシュになるが、対象変数を指定することによりその変数の値により
キャッシュを切り替えることが可能。変数には、tal:define など、テンプレート内でで定義したものを
利用できない。

Examples:
三時間キャッシュされる
<div phptal:cache="3h">...</div>

$object->idの値にが同一の場合1日キャッシュされたものが表示される。
<ul phptal:cache="1d per object/id">...</ul>

●*:block
出力しないタグ、繰り返しのために記述するタグにおいて、同一のネームスペースを大量に使う
場合に利用すると記述量が少なくてすむ。以下のどちらも同じ内容を表示する。
タグの省略とともに、出力しないタグを存在するタグで記載しなくて済むメリットもある

<tal:block condition="someCondition" repeat="item someRepeat">
<div macro="x">
</tal:block>

<div tag="" condition="someCondition" repeat="item someRepeat">
<div macro="x">
</div>


●PHPTALES
TAL、METAL、PHPTAL にて使われる式構文。1つの属性が複数のPHPTALESを含む場合は、
「;」で区切って記述する。

1.path:
基本修飾語、何も指定されなければ先頭にこれがついているものと同等のものとして動作する。
なお、変数をテキストノードやほかのTALESの中で変数を使用したい場合には
「${path/to/my/variable}」と記述する。

2.Conditional statements
比較演算子、XML属性には<や>を記載するのを避けたほうがいいので、以下のようにテキストで代替する、
tal:condition や php:で利用する。
< : LT (less than) > : GT (greater than)
<= : LE (less or equal) >= : GE (greater or equal)

string:
文字列をあらわす。ただし、「;」は式のセパレータとして働き、「$」はPATHの開始を示すので、
そのままでは利用できない。それぞれ「;」=>「;;」、「$」=>「$$」と記述する。

php:
この後に続いてPHPの構文を記述することで式を評価する。「->」は「.」で記述すること。また
変数名の$は記述する必要はない。スペースを挟んで「.」を記載した場合には、結合演算子として
扱われる。

この属性は慎重に使用すべきであるとマニュアルにはある。どうしてもメソッドが必要な場合以外は
使わないようにする。

not:
真偽を表現するものに対して、真偽値を逆転させる。

exists:
PATH存在を確認し、存在すれば真、存在しなければ偽を返す。存在するかしないかわからないPATHを
指定する場合は、これで確認してからそのPATHを使用する。

default
式ではなく、キーワードとして利用する。要素や属性として標準で設定されているものを利用することを
宣言する。以下のように「|」で連結することで、path/to/possible/varが存在しない場合は、defineで
myVarは「default my var value」になる。

<span define="myVar path/to/possible/var | default">
default my var value
</span>

structure
default と同様式ではなく、キーワード。エスケープを抑止する。変数の出力は標準でエスケープされるので、
エスケープされたくない場合には、このキーワードを設定する。

Expression chains
default の例のように、「|」を使って式を連鎖的に記述することが可能。左側から式を評価し、偽で
あるときのみ次の式を実行する。Stringは必ず真になる。


メーリングリストメモ
http://lists.motion-twin.com/pipermail/phptal/