(PHP 4, PHP 5, PHP 7, PHP 8)
ob_start — Включает буферизацию вывода
$callback
= null
, int $chunk_size
= 0, int $flags
= PHP_OUTPUT_HANDLER_STDFLAGS
): boolФункция включает буферизацию вывода. Пока буферизация вывода активна, вывод из скрипта не отправляется, вместо этого вывод сохраняется во внутреннем буфере. В разделе «Какой вывод буферизуется?» рассказано, на какой именно вывод это влияет.
Буферы вывода помещаются в стек, поэтому функцию ob_start() разрешается вызывать при другом активном буфере. Если активировали несколько буферов вывода, вывод фильтруется последовательно через каждый из буферов в порядке вложенности. Подробнее об этом рассказывает раздел «Вложенные буферы вывода».
Подробное описание буферов вывода даёт раздел «Пользовательские буферы вывода».
callback
Можно задать необязательный параметр callback
(callable).
Чтобы обойти его, передают значение null
.
Параметр callback
вызывается,
когда буфер вывода сбрасывается (отправляется), очищается
или когда буфер вывода сбрасывается в конце скрипта.
Сигнатура callback
-функции:
buffer
phase
PHP_OUTPUT_HANDLER_*
.
Подробнее о флагах рассказано в разделе
«Флаги, передаваемые обработчикам вывода».
Если параметр callback
вернёт false
,
возвращается содержимое буфера.
Подробнее об этом рассказано в разделе
«Возвращаемые значения обработчика вывода».
Вызов любой из следующих функций из обработчика вывода выдаст фатальную ошибку: ob_clean(), ob_end_clean(), ob_end_flush(), ob_flush(), ob_get_clean(), ob_get_flush(), ob_start().
Подробнее о callback
-функциях (обработчиках вывода)
рассказано в разделах «Обработчики вывода»
и «Работа с обработчиками вывода».
chunk_size
Если передан необязательный параметр chunk_size
,
буфер будет сброшен после каждого блока кода,
размер буфера которого достиг или превысил
значение параметра chunk_size
.
Значение по умолчанию 0
означает,
что вывод буферизуется до тех пор, пока буфер не будет выключен.
Подробнее об этом рассказано в разделе «Размер буфера».
flags
Параметр flags
— это битовая маска, которая
управляет операциями, выполняемыми с буфером вывода.
По умолчанию разрешены очистка, сброс и удаление буферов вывода,
что разрешено устанавливать явно через
флаги управления буфером
.
Подробнее об этом рассказано в разделе «Операции, разрешённые для буферов».
Каждый флаг управляет доступом к набору функций, как описано ниже:
Константа | Функции |
---|---|
PHP_OUTPUT_HANDLER_CLEANABLE |
ob_clean() |
PHP_OUTPUT_HANDLER_FLUSHABLE |
ob_end_flush() |
PHP_OUTPUT_HANDLER_REMOVABLE |
ob_end_clean(), ob_end_flush(), ob_get_clean(), ob_get_flush() |
Возвращает true
в случае успешного выполнения или false
, если возникла ошибка.
Пример #1 Пример callback-функции, определённой пользователем
<?php
function callback($buffer)
{
// Заменить все яблоки апельсинами
return (str_replace("яблоки", "апельсины", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>Это всё равно, что сравнить яблоки и апельсины.</p>
</body>
</html>
<?php
ob_end_flush();
?>
Результат выполнения приведённого примера:
<html> <body> <p>Это всё равно, что сравнить апельсины и апельсины.</p> </body> </html>
Пример #2 Создание нестираемого буфера вывода
<?php
ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_REMOVABLE);
?>