ob_list_handlers

関数の概要

ob_list_handlers は、現在の出力バッファに登録されているすべての出力バッファハンドラの一覧を配列で取得するPHP関数です。出力バッファリング機能を利用している際に、どのようなハンドラが登録されているかを調べたい場合に役立ちます。

パラメータの説明

  • この関数はパラメータを受け取りません。

戻り値

登録されている出力バッファハンドラの名前を要素とする配列を返します。もし出力バッファが開始されていなければ、空の配列が返されます。

使用例

基本的な使い方

<?php
ob_start(function($buffer) {
    return strtoupper($buffer);
});
print "hello world";

$handlers = ob_list_handlers();
print_r($handlers);
ob_end_flush();
?>

この例では、出力バッファを開始し、登録したハンドラ(文字列を大文字に変換するコールバック)を取得しています。ob_list_handlersで配列にハンドラ名が含まれていることが確認できます。

複数の出力バッファハンドラを登録した場合

<?php
ob_start(function($buffer) {
    return trim($buffer);
});
ob_start(function($buffer) {
    return str_replace('world', 'PHP', $buffer);
});
print " hello world ";

$handlers = ob_list_handlers();
print_r($handlers);

ob_end_flush();
ob_end_flush();
?>

複数の出力バッファハンドラを積み重ねて登録すると、ob_list_handlersは全てのハンドラを配列で返します。上のコードではトリム処理と文字列置換処理の2つのハンドラがリストアップされます。

出力バッファなしの状態での取得

<?php
$handlers = ob_list_handlers();
var_dump($handlers);
?>

出力バッファが開始されていない場合は、空の配列が返されます。これで現在出力バッファリングが行われているかどうかも確認できます。

関連する関数

  • ob_start — 出力バッファリングを開始する
  • ob_get_contents — 出力バッファの内容を取得する
  • ob_end_flush — 出力バッファを終了して内容を出力する
  • ob_clean — 出力バッファの内容を消去する
  • ob_get_level — 出力バッファリングのレベルを取得する

まとめ

ob_list_handlersは現在有効な出力バッファハンドラのリストを取得できる便利な関数です。出力バッファリングの多層構造を管理したり、デバッグで登録済みのハンドラを調べたい場合に特に役立ちます。パラメータ不要でシンプルに使えるため、実務でも扱いやすい関数です。