RIGHT:[[:t/要素]] [[:t/記法]]

***Chain of Responsibilityで [#i0036ca7]
記法に分類されるものも含めてChain of Responsibility。

%%ページ内の全てのページ/要素を呼ぶことになるが、高速化のため特定のパラメーター1つをクエリーに含めるようにしておいて、それらを事前判定に使う。そこで見込みありと判定された機能を呼んで本判定をしてもらう。%%

→ページに記述された分だけなので対策不要。全て呼べばいい。

***トリガー指定 [#q65f12be]
イベント/フック。
-%%1ページごとに%%
-%%全ページ処理前に、処理後に%%
-%%特定モジュールの処理前に、処理後に%%

%%…など。%%

→トリガーはオブジェクト生成時、1ページ内全オブジェクト完成後。全要素全トリガーを使用。選択できない。何もしないことは可能。
ページの範囲を越えるトリガーはなし。複数ページを1つにして使いたいときは埋め込みで。
***実行順序 [#x2d22b29]
実行順序は記述位置による。ネストの浅いレベル→深いレベル→浅いレベル。

**ページではなくURLクエリーから呼ばれたとき [#wb76b868]
一時的なページを作って、そこに記述されているかのように処理。ページ上に記述されているときと処理統一。

RIGHT:[[:t/リクエスト]]

***%%実行順序%% [#pca346f2]
%%機能の実行順をURLクエリーに書かれている順ということにする。同じトリガーを使う機能が複数ある場合。%%

%%ページの要素ではないが、呼ばれるコードはページ/要素のもの。仮のページに記述されているようなもの。%%

***%%連鎖(Chain)%% [#vb979a6a]
%%ネストできない代わりにチェイン。一度に呼ばれた要素を全てネストしているかのようにつなぐ。引数と戻り値がつながる。%%

***%%データの改ざん%% [#k62ae6e0]
%%前の要素の出力は次の要素に入力される。クライアントからの入力も書き換え可能。次の要素には書き換え後が渡る。%%

%%問題は出力と入力のデータ型を統一すること。%%
%%文字列か、文字列の集約。HTMLで書かれたページの断片。%%

→データコンテキストで。仮のページを使うことで、ページに記述されたのと同じ処理の仕方になる。ページコンテキストも生じる。
RIGHT:[[:t/コンテキスト]]