header_register_callback

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

header_register_callback调用头函数

描述

header_register_callback(可调用 $callback): 布尔值

注册一个将在 PHP 开始发送输出时调用的函数。

在 PHP 准备发送所有头信息后,但在发送任何其他输出之前执行 callback,从而创建一个窗口,可以在发送之前操作传出的头信息。

参数

callback

在发送头信息之前调用的函数。它没有参数,返回值被忽略。

返回值

如果成功则返回 true,如果失败则返回 false

示例

示例 #1 header_register_callback() 示例

<?php

header
('Content-Type: text/plain');
header('X-Test: foo');

function
foo() {
foreach (
headers_list() as $header) {
if (
strpos($header, 'X-Powered-By:') !== false) {
header_remove('X-Powered-By');
}
header_remove('X-Test');
}
}

$result = header_register_callback('foo');
echo
"a";
?>

上面的示例将输出类似于

Content-Type: text/plain

a

注释

header_register_callback() 在头信息即将发送出去时执行,因此此函数的任何输出都可能破坏输出。

注意:

只有在使用支持它们的 SAPI 时,头信息才可访问和输出。

参见

添加注释

用户贡献注释 1 个注释

matt@kafene
11 年前
请注意,此函数在 php 5.4 中只注册一个回调函数。将执行最近设置的回调函数,它们不会像使用 register_shutdown_function() 一样按顺序执行,只是被覆盖。

这是我的测试

<?php

$i
= $j = 0;
header_register_callback(function() use(&$i){ $i+=2; });
header_register_callback(function() use(&$i){ $i+=3; });
register_shutdown_function(function() use(&$j){ $j+=2; });
register_shutdown_function(function() use(&$j){ $j+=3; });
register_shutdown_function(function() use(&$j){ var_dump($j); });
while(!
headers_sent()) { echo "<!-- ... flushing ... -->"; }
var_dump(headers_sent(), $i);
exit;

?>

结果

headers_sent() - true
$i = 3
$j = 5
To Top