使用中の出力ハンドラの一覧を取得する

# ob_list_handlers

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

ob_list_handlers — 使用中の出力ハンドラの一覧を取得する

### 説明

function ob_list_handlers(): array

使用中の出力ハンドラの一覧を返します。

### パラメータ

この関数にはパラメータはありません。

### 戻り値

これは、使用中の出力ハンドラを（もし存在すれば）配列で返します。

もし output_buffering が 有効になっており、output_handler が未設定の場合や、コールバックが設定されていない場合、 あるいは ob_start() に `null` を渡した場合は、 `"default output handler"` を返します。 output_buffering を有効にし、output_handler を設定することは、 内部(組み込み)関数 を ob_start() に渡すことと同じです。

ob_start() に callable を渡した場合、callable の 完全修飾名 を返します。callable が __invoke() を実装したオブジェクトの場合、 オブジェクトの __invoke() メソッドの 完全修飾名 を返します。 callable が Closure の場合、 `"Closure::__invoke"` を返します。

### 例

例1 ob_list_handlers() の例

    <?php
    // using output_buffering=On, no output_handler set
    var_dump(ob_list_handlers());
    ob_end_flush();

    // no callback or null
    ob_start();
    var_dump(ob_list_handlers());
    ob_end_flush();

    // anonymous function
    ob_start(function($string) { return $string; });
    var_dump(ob_list_handlers());
    ob_end_flush();

    // arrow function
    ob_start(fn($string) => $string);
    var_dump(ob_list_handlers());
    ob_end_flush();

    // first class callable
    $firstClassCallable = userDefinedFunction(...);

    ob_start([$firstClassCallable, '__invoke']);
    var_dump(ob_list_handlers());
    ob_end_flush();

    // internal (built-in) function
    ob_start('print_r');
    var_dump(ob_list_handlers());
    ob_end_flush();

    // user-defined function
    function userDefinedFunction($string, $flags) { return $string; };

    ob_start('userDefinedFunction');
    var_dump(ob_list_handlers());
    ob_end_flush();

    class MyClass {
        public static function staticHandle($string) {
            return $string;
        }

        public static function handle($string) {
            return $string;
        }

        public function __invoke($string) {
            return $string;
        }
    }

    // class and static method
    ob_start(['MyClass','staticHandle']);
    var_dump(ob_list_handlers());
    ob_end_flush();

    // object and non-static method
    ob_start([new MyClass,'handle']);
    var_dump(ob_list_handlers());
    ob_end_flush();

    // invokable object
    ob_start(new MyClass);
    var_dump(ob_list_handlers());
    ob_end_flush();
    ?>

上の例の出力は以下となります。

    array(1) {
      [0]=>
      string(22) "default output handler"
    }
    array(1) {
      [0]=>
      string(22) "default output handler"
    }
    array(1) {
      [0]=>
      string(7) "print_r"
    }
    array(1) {
      [0]=>
      string(19) "userDefinedFunction"
    }
    array(1) {
      [0]=>
      string(17) "Closure::__invoke"
    }
    array(1) {
      [0]=>
      string(17) "Closure::__invoke"
    }
    array(1) {
      [0]=>
      string(17) "Closure::__invoke"
    }
    array(1) {
      [0]=>
      string(21) "MyClass::staticHandle"
    }
    array(1) {
      [0]=>
      string(15) "MyClass::handle"
    }
    array(1) {
      [0]=>
      string(17) "MyClass::__invoke"
    }

### 参考

- ob_end_clean() - アクティブな出力用バッファをクリア(消去)し、出力のバッファリングをオフにする
- ob_end_flush() - アクティブな出力用バッファをフラッシュ(送信)し、アクティブな出力バッファをオフにする
- ob_get_flush() - アクティブな出力ハンドラの戻り値をフラッシュ(送信)し、その内容を文字列として返した後で、それをオフにする
- ob_start() - 出力のバッファリングを有効にする

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open