header_register_callback

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

header_register_callbackChama uma função de cabeçalho

Descrição

function 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.

Aviso

As funções de retorno não são empilhadas. Chamadas subsequentes a header_register_callback() vão desregistrar silenciosamente qualquer callback existente, independente de onde ela foi definida. Esteja ciente que dependências podem sobrescrever a função de retorno. A depuração de erros neste cenário pode ser difícil.

Parâmetros

callback

Função de retorno 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.

Examples

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
adicionar nota

Notas de Usuários 1 note

up
12
matt@kafene
13 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