<< Piece_Unityユーザーズマニュアル


OutputBufferStackプラグイン

概要

出力バッファリングを有効にし、ob_start()を使って、それぞれの出力フィルタ?を、PHPの出力ハンドラとして登録する出力フィルタ?

説明

void invoke (void)

出力フィルタ?は、Rootプラグイン?の拡張ポイントoutputFilter?として定義されており、OutputBufferStackプラグインがその役割を担っています。OutputBufferStackという名前から想像できるように、このプラグインの唯一の拡張ポイントfiltersはスタックのように働きます。1

このプラグインは、拡張ポイントfiltersに設定されたすべてのフィルタを、登録順に出力バッファリング機構に登録します。登録されたフィルタは、PHPの出力バッファリング機構によって、リクエストの最後にブラウザに出力をフラッシュする際に、登録順の逆に実行されます。

このプラグインのプロセスフローは下記のようになります。

  1. 拡張ポイントfiltersが配列かどうか確認する。filtersが配列でなければ処理を終了し、呼び出し元に戻る
  2. ob_end_clean()によって、すべての出力ハンドラをクリアする
  3. 拡張ポイントfiltersの要素を、ob_start()を使って、出力ハンドラとして登録する


  1. 1. この動作はPHPの出力バッファリング機構のものです。

拡張ポイント

filters

デフォルト値

array()

概要

出力フィルタ?の配列。

説明

出力フィルタ?には、後述のインタフェースを持つプラグイン、または単なる関数が登録できます。出力フィルタ?は、配列の要素順に出力バッファリング機構に登録され、逆順に実行されます。

出力フィルタのインタフェース

string foo (string $buffer)

それぞれの出力フィルタ?は、文字列を受け取って文字列を返すようなインタフェースを備えている必要があります。

設定例

- name: OutputBufferStack
  point:
    - name: filters
      type: extension
      value:
        - OutputFilter_ContentLength
        - mb_output_handler()
        - OutputFilter_JapaneseZ2H

この設定例は次のように動作します。

  1. OutputFilter_JapaneseZ2Hプラグインによって、全角カナが半角カナに変換される
  2. mb_output_handler()によって、出力バッファの文字が、内部文字エンコーディングからHTTP出力文字エンコーディングに変換される
  3. OutputFilter_ContentLengthプラグインによって、適切なContent-Lengthヘッダが出力される

設定ポイント

設定ポイントはありません。

ソースコード

Piece/Unity/Plugin/OutputBufferStack.php


<< Piece_Unityユーザーズマニュアル

ユーザコメント

Error: Failed to load processor AddComment
No macro or processor named 'AddComment' found