文字

header_register_callback

(PHP 5 >= 5.4.0)

header_register_callbackCall a header function

说明

bool header_register_callback ( callable $callback )

Registers a function that will be called when PHP starts sending output.

The callback is executed just after PHP prepares all headers to be sent, and before any other output is sent, creating a window to manipulate the outgoing headers before being sent.

参数

callback

Function called just before the headers are sent. It gets no parameters and the return value is ignored.

返回值

成功时返回 TRUE , 或者在失败时返回 FALSE

范例

Example #1 header_register_callback() example

<?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/plaina

注释

header_register_callback() is executed just as the headers are about to be sent out, so any output from this function can break output.

Note:

数据头只会在SAPI支持时得到处理和输出。

参见

  • headers_list() - Returns a list of response headers sent (or ready to send)
  • header_remove() - Remove previously set headers
  • header() - 发送原生 HTTP 头

用户评论:

[#1] matt@kafene [2013-02-26 22:26:01]

Note that this function only registers a single callback as of php 5.4. The most recent callback set is the one that will be executed, they will not be executed in order like with register_shutdown_function(), just overwritten.

Here is my test:

<?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;

?>


Results:

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

上一篇: 下一篇: