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
header_register_callback
(Bir sürüm bilgisi bulunamadı; sadece SVN'de olabilir.)
header_register_callback — Call a header function
Açıklama
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.
Değiştirgeler
-
callback -
Function called just before the headers are sent. It gets no parameters and the return value is ignored.
Dönen Değerler
Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.
Örnekler
Örnek 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";
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Content-Type: text/plain a
Notlar
header_register_callback() is executed just as the headers are about to be sent out, so any output from this function can break output.
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() - Remove previously set headers
- header() - Ham bir HTTP başlığı gönderir
