PHP Conference Nagoya 2025

header_register_callback

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

header_register_callbackBir başlık işlevi çağırır

Açıklama

header_register_callback(callable $geriçağırım): bool

PHP çıktıyı gönderirken çağrılacak işlevi kayda alır.

PHP geriçağırım işlevini, başlıkları göndermeye hazırlanırken, hiçbir çıktı göndermemişken, gönderim öncesi giden başlıklarda değişiklik yapacağı pencereyi oluşturarak çağrılır.

Bağımsız Değişkenler

geriçağırım

Başlıklar gönderilmeden hemen önce çağrılacak işlev. Hiçbir bağımsız değişken almaz ve dönüş değeri yok sayılır.

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

Örnekler

Örnek 1 - header_register_callback() örneği

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

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Content-Type: text/plain

a

Notlar

header_register_callback() başlıklar gönderilmeden hemen önce çalıştırıldığından bu işlevden yapılacak herhangi bir çıktı PHP çıktısını bozabilir.

Bilginize:

Başlıklar sadece onları destekleyen bir SAPI kullanımdaysa erişilebilir ve çıktılanabilir olacaktır.

Ayrıca Bakınız

  • headers_list() - Gönderilmiş (veya gönderilmeye hazır) yanıt başlıklarının listesiyle döner
  • header_remove() - Evvelce tanımlanmış başlıkları siler
  • header() - Ham bir HTTP başlığı gönderir
add a note

User Contributed Notes 1 note

up
12
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