header_register_callback

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

header_register_callbackCall a header function

Descrição

header_register_callback(callable $callback): bool

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.

Parâmetros

callback

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

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Exemplos

Exemplo #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";
?>

O exemplo acima produzirá algo semelhante a:

Content-Type: text/plain

a

Notas

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

Nota:

Os cabeçalhos só serão acessíveis e enviados quando uma SAPI que os suporta estiver em uso.

Veja Também

  • headers_list() - Retorna uma lista de cabeçalhos de resposta enviados (ou prontos para enviar)
  • header_remove() - Remove cabeçalhos definidos anteriormente
  • header() - Send a raw HTTP header
add a note add a note

User Contributed Notes 1 note

up
6
matt@kafene
11 years ago
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
To Top