header_register_callback
(PHP 5 >= 5.4.0, PHP 7)
header_register_callback — Вызывает функцию заголовка (header)
Описание
Устанавливает функцию, которая будет вызвана при PHP выводе.
Параметр callback
запускается прямо после того, как были подготовлены все пересылаемые PHP заголовки, и перед отправкой любого другого вывода, создавая окно для управления исходящими заголовками перед отправкой.
Список параметров
-
callback
-
Функция вызывается непосредственно перед отправкой заголовков, не получает параметров и возвращаемое значение игнорируется.
Возвращаемые значения
Возвращает TRUE
в случае успешного завершения или FALSE
в случае возникновения ошибки.
Примеры
Пример #1 Пример использования 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";
?>
Результатом выполнения данного примера будет что-то подобное:
Content-Type: text/plain a
Примечания
Функция header_register_callback() запускается по готовности отправки заголовков, так что любой вывод из этой функции может прервать вывод.
Замечание:
Доступ к заголовкам и их вывод будет осуществляться только в случае, если в используемом вами SAPI есть их поддержка.
Смотрите также
- headers_list() - Возвращает список переданных (или готовых к передаче) заголовков
- header_remove() - Удаляет предварительно установленные заголовки
- header() - Отправка HTTP заголовка
- checkdnsrr
- closelog
- define_syslog_variables
- dns_check_record
- dns_get_mx
- dns_get_record
- fsockopen
- gethostbyaddr
- gethostbyname
- gethostbynamel
- gethostname
- getmxrr
- getprotobyname
- getprotobynumber
- getservbyname
- getservbyport
- header_register_callback
- header_remove
- header
- headers_list
- headers_sent
- http_response_code
- inet_ntop
- inet_pton
- ip2long
- long2ip
- openlog
- pfsockopen
- setcookie
- setrawcookie
- socket_get_status
- socket_set_blocking
- socket_set_timeout
- syslog
Коментарии
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