Placeholder ビューヘルパーは、
ビュースクリプトとビューのインスタンスとの間でコンテンツを永続化させます。
それ以外の便利な機能としては次のようなものがあります。
たとえばコンテンツの集約、ビュースクリプトの内容をキャプチャして後で再利用、
コンテンツの前後へのテキストの追加 (そして集約したコンテンツ間のセパレータの追加)
などです。
Placeholder ヘルパーを起動する際にプレースホルダ名を指定し、
ヘルパーはプレースホルダコンテナオブジェクトを返します。
これを処理するなり、単純に echo するなりして使用できます。
Placeholder ビューヘルパーは、
ArrayObject を継承したコンテナを使用します。
これは、配列をより高機能に操作できるものです。
さらに、コンテナに格納された内容をフォーマットするために
さまざまなメソッドが用意されています。
setPrefix($prefix) は、
コンテンツの先頭に付加するテキストを設定します。
getPrefix() を使用すると、
その時点での設定内容を取得できます。
setPostfix($prefix) は、
コンテンツの末尾に付加するテキストを設定します。
getPostfix() を使用すると、
その時点での設定内容を取得できます。
setSeparator($prefix) は、
各コンテンツの間に挿入するテキストを設定します。
getSeparator() を使用すると、
その時点での設定内容を取得できます。
setIndent($prefix) は、
コンテンツの字下げ幅を設定します。
整数値を渡すと、渡された数のスペースを使用します。
文字列を渡すと、その文字列を使用します。
getIndent() を使用すると、
その時点での設定内容を取得できます。
Placeholder コンテナオブジェクトは
ArrayObject を継承しているので、
単純にコンテナに格納するのではなく
そのコンテナの特定のキーにコンテンツを格納するのも簡単です。
キーへのアクセスは、オブジェクトのプロパティか配列のキーのいずれでも可能です。
Placeholder ビューヘルパーは、
任意のコンテンツをキャプチャして後でレンダリングすることができます。
そのために使用する API は次のようなものです。
captureStart($type, $key) は、
コンテンツのキャプチャを開始します。
$type は、
Placeholder の定数 APPEND あるいは
SET のいずれかとなります。APPEND
を指定すると、キャプチャされたコンテンツが
プレースホルダ内の現在のコンテンツの末尾に追加されます。
SET の場合は、
キャプチャされたコンテンツをそれ単体でプレースホルダの値として使用します
(それまでに登録されていたコンテンツを上書きします)。
デフォルトの $type は
APPEND です。
$key には、コンテンツのキャプチャ先として
プレースホルダのコンテナの特定のキーを指定することができます。
captureStart() は、
captureEnd() がコールされるまで他のキャプチャをロックします。
同一のプレースホルダコンテナでキャプチャをネストすることはできません。
しようとすると例外が発生します。
captureEnd() は、
コンテンツのキャプチャを終了して、
captureStart()
がコールされたときの指定に応じてそれをコンテナに格納します。
content ?>
content ?>