PHP Australia Conference 2015

header_register_callback

(PHP 5 >= 5.4.0)

header_register_callbackEnregistre une fonction de rappel pour l'envoi des en-têtes

Description

bool header_register_callback ( callable $callback )

Enregistre une fonction de rappel qui sera appelée lorsque PHP tentera d'écrire sur la sortie.

callback est exécutée juste après que PHP ait préparé les en-têtes à envoyer, et avant qu'il ne les envoie. Ceci permet une manipulation fine des en-têtes avant leur envoi.

Liste de paramètres

callback

La fonction à appeler juste avant que les en-têtes ne soient envoyés. Elle n'accepte aucun paramètre et sa valeur de retour est ignorée.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Exemples

Exemple #1 Exemple avec 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";
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

Content-Type: text/plain

a

Notes

header_register_callback() est exécutée juste avant l'envoi des en-têtes, donc tout affichage déclenché par cette fonction peut casser l'affichage final de la sortie.

Note:

Les en-têtes ne seront accessibles et s'afficheront que lorsqu'un SAPI qui les supportent sera utilisé.

Voir aussi

add a note add a note

User Contributed Notes 1 note

up
2
matt@kafene
1 year 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