(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
ob_list_handlers — 列出所有正在使用的输出处理器
此函数没有参数。
这将返回一个数组,其中包含正在使用的输出处理器(如果有)。
如果output_buffering已启用且未设置output_handler,或者没有回调函数或null
传递给ob_start(),则返回"default output handler"
。启用output_buffering并设置output_handler等效于将内部(内置)函数传递给ob_start()。
如果将callable传递给ob_start(),则返回callable的完全限定名称。如果callable是实现__invoke()的对象,则返回对象的__invoke()方法的完全限定名称。如果callable是Closure,则返回"Closure::__invoke"
。
示例 #1 ob_list_handlers() 示例
<?php
// 使用 output_buffering=On,未设置 output_handler
var_dump(ob_list_handlers());
ob_end_flush();
// 没有回调函数或null
ob_start();
var_dump(ob_list_handlers());
ob_end_flush();
// 匿名函数
ob_start(function($string) { return $string; });
var_dump(ob_list_handlers());
ob_end_flush();
// 箭头函数
ob_start(fn($string) => $string);
var_dump(ob_list_handlers());
ob_end_flush();
// 一级可调用
$firstClassCallable = userDefinedFunction(...);
ob_start([$firstClassCallable, '__invoke']);
var_dump(ob_list_handlers());
ob_end_flush();
// 内部(内置)函数
ob_start('print_r');
var_dump(ob_list_handlers());
ob_end_flush();
// 用户定义函数
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;
}
}
// 类和静态方法
ob_start(['MyClass','staticHandle']);
var_dump(ob_list_handlers());
ob_end_flush();
// 对象和非静态方法
ob_start([new MyClass,'handle']);
var_dump(ob_list_handlers());
ob_end_flush();
// 可调用对象
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" }