PHP 8.4.2 Released!

header_register_callback

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

header_register_callbackChama uma função de cabeçalho

Descrição

header_register_callback(callable $callback): bool

Registra uma função que será chamada quando o PHP começar a enviar a saída.

A função callback é executada logo após o PHP preparar todos os cabeçalhos a serem enviados, e antes de qualquer outra saída ser enviada, criando uma janela para manipular os cabeçalhos de saída antes de serem enviados.

Parâmetros

callback

Função chamada logo antes dos cabeçalhos serem enviados. Não recebe parâmetros e o valor de retorno é ignorado.

Valor Retornado

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

Exemplos

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

O exemplo acima produzirá algo semelhante a:

Content-Type: text/plain

a

Notas

header_register_callback() é executado quando os cabeçalhos estão prestes a ser enviados, portanto, qualquer saída desta função pode quebrar a saída.

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() - Envia um cabeçalho HTTP bruto
adicione uma nota

Notas Enviadas por Usuários (em inglês) 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