2024 年 PHP Conference Japan

ob_list_handlers

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

ob_list_handlers列出所有使用中的輸出處理器

說明

ob_list_handlers(): 陣列

列出所有使用中的輸出處理器。

參數

此函式沒有參數。

傳回值

此函式將傳回一個包含使用中輸出處理器的陣列(如果有的話)。

如果啟用了 output_buffering 且未設定 output_handler,或者沒有傳遞回呼函式或 nullob_start(),則會回傳 "default output handler"。啟用 output_buffering 並設定 output_handler 等同於將 內建函式 (built-in function) 傳遞給 ob_start()

如果將 可呼叫物件 (callable) 傳遞給 ob_start(),則會回傳該 可呼叫物件完整限定名稱 (fully qualified name)。如果該 可呼叫物件 是一個實作了 __invoke() 的物件,則會回傳該物件的 __invoke() 方法的 完整限定名稱。如果該 可呼叫物件 是一個 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() - 開啟輸出緩衝

新增註記

使用者貢獻的註記

此頁面沒有使用者貢獻的註記。
To Top