2016-06-20 5 views
3

が、私はPHPのob_get_status機能のドキュメントを閲覧して発見されている次PHPで出力バッファ名を設定するにはどうしたらいいですか?

戻り値:full_statusパラメータなしかfull_statusで呼び出された場合

= FALSE次の要素を持つ単純な配列が返されます。

Array (
    [level] => 2 
    [type] => 0 
    [status] => 0 
    [name] => URL-Rewriter 
    [del] => 1 
) 

しかし、すべてのインターネットでは、1つの質問に答えることができないようです - 出力バッファの名前はどのように設定できますか?

できますか?私はドキュメンテーション自体や他のどこかの手掛かりを見つけることはできません。 ドキュメントが言及しかしその

名=アクティブな出力ハンドラまたは「デフォルトの出力ハンドラ」 どれもかなり多くが、何らかの形でそれを設定することが可能であるを意味

に設定されていない場合の名前。

これを行うことができますか?どんな助けも大いにアピールされます。

+0

をあなたは本当に名前を設定することはできません。 'name'は出力バッファリングを扱う関数名と等しくなります。 'mb_output_handler'です。 http://php.net/mb_output_handler –

答えて

1

ob_startを使用すると、PHPで出力バッファリングをオンにすることができます。

機能は、このような署名を有することに留意されたい:

ブールのob_start([呼び出し可能$ output_callback = NULL [、INT $ CHUNK_SIZE = 0、int型$フラグ= PHP_OUTPUT_HANDLER_STDFLAGS]]])

名前付き関数を有効なコールバックとして渡すことができます。例えば

<?php 

function test_handler($a) { 
    return $a; 
} 

ob_start('test_handler'); 

var_dump(ob_get_status()); 

はあなたを与える:

array(7) { 
    ["name"]=> 
    string(12) "test_handler" 
    ["type"]=> 
    int(1) 
    ["flags"]=> 
    int(113) 
    ["level"]=> 
    int(0) 
    ["chunk_size"]=> 
    int(0) 
    ["buffer_size"]=> 
    int(16384) 
    ["buffer_used"]=> 
    int(0) 
} 
1

出力バッファに設定する名前は、フラッシュするときに呼び出される出力ハンドラの名前です。

例:

ob_start('my_buffer'); 


function my_buffer($buff){ 
    return str_replace(":)","<img src=\"smiley\"/>",$buff); 
} 
+0

ありがとうございました。私はなぜドキュメンテーションにこれについて言及されていないのか不思議です。 – Kalko

1

は、名前を設定することはできません。コールバックの名前が表示されます。

あなたのコールバック関数はfoo_barは呼び出された場合:あなたのコールバックがある場合

[name] => "Acme::foo_bar" 

:あなたのコールバックは、クラスの方法foo_barはアクメある場合

[name] => "foo_bar" 

を匿名機能:

[name] => "Closure::__invoke" 
関連する問題