(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.
Когда требуется, чтобы при вызове с аргументами
функция не вызывала callback-функцию, в параметр передают значение 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_flush() |
PHP_OUTPUT_HANDLER_REMOVABLE |
ob_end_clean(), ob_end_flush(), ob_get_clean(), ob_get_flush() |
Замечание: До PHP 8.4.0 через параметр flags также устанавливали флаги статуса обработчика вывода.
Функция возвращает 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);
?>