4

PHP のob_get_status関数のドキュメントを参照していて、次のことがわかりました。

戻り値:

full_statusパラメータなしで、またはfull_status = FALSEで呼び出された場合、次の要素を持つ単純な配列が返されます。

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

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

それを行うことさえ可能ですか?ドキュメント自体、または他の場所に手がかりが見つかりませんでした。ただし、ドキュメントには次のように記載されています

name = アクティブな出力ハンドラの名前、または何も設定されていない場合は「デフォルトの出力ハンドラ」

これは、何らかの方法で設定できることを意味します。

これができるかどうか、皆さんは何か考えがありますか?どんな助けでも大歓迎です。

4

3 に答える 3

2

名前は設定できません。コールバックの名前を出力します。

コールバックがfoo_barという関数の場合:

[name] => "foo_bar"

コールバックがクラスAcmeのメソッドfoo_barである場合:

[name] => "Acme::foo_bar"

コールバックが無名関数の場合:

[name] => "Closure::__invoke"
于 2016-06-20T13:10:56.913 に答える
2

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

関数には次のような署名があることに注意してください。

bool ob_start ([ callable $output_callback = NULL [, int $chunk_size = 0 [, int $flags = 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)
}
于 2016-06-20T13:13:40.687 に答える
1

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

例えば

ob_start('my_buffer');


function my_buffer($buff){
    return str_replace(":)","<img src=\"smiley\"/>",$buff);
}
于 2016-06-20T13:08:39.413 に答える