ProfiPHPProfiPHP
Категория: Функции управления выводом

Функция Ob_start

Функция Ob_start включает буферизацию вывода.
bool ob_start([ callable $output_callback = NULL [, int $chunk_size = 0 [, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS ]]] )
Если буферизация вывода активна, вывод скрипта не высылается (кроме заголовков), а сохраняется во внутреннем буфере.

Содержимое этого внутреннего буфера может быть скопировано в строковую переменную, используя Ob_get_contents. Для вывода содержимого внутреннего буфера следует использовать Ob_end_flush. В качестве альтернативы можно использовать Ob_end_clean для уничтожения содержимого буфера.

Буферы вывода помещаются в стек, то есть допускается вызов Ob_start после вызова другой активной Ob_start. При этом необходимо вызывать Ob_end_flush соответствующее количество раз. Если активны несколько callback-функций, вывод последовательно фильтруется для каждой из них в порядке вложения.

Можно задать необязательный параметр Output_callback. Эта функция принимает строку в виде аргумента и должна также вернуть строку. Она вызывается при сбросе (отправке) или очистке (с помощью Ob_flush, Ob_clean или подобных функций) или если буфер вывода сбрасывается в браузер по окончанию запроса. При вызове функции Output_callback, она получает содержимое буфера и должна вернуть обновленное содержимое для буфера вывода, который будет отправлен браузеру. Если Output_callback не является допустимой функцией, то документируемая функция вернет FALSE.

Чтобы понять все это, используем пример:
function callback( $buffer ) {
return str_replace( 'first', 'second', $buffer );
}
ob_start( 'callback' );
//Далее следует тело документа:
echo 'first home';
ob_end_flush( );
Автоматически будет сделана замена слова first на second, в результате чего будет выведено сообщение: second house.

Более наглядно работу данной функции можно посмотреть в теме: Простая система кэширования и буферизации.

Если передан не обязательный параметр Chunk_size, то буфер буден сброшен после любого вывода превышающего или равного по размеру Chunk_size. Значение по умолчанию 0 означает, что функция вывода будет вызвана, когда буфер будет закрыт. До PHP 5.4.0, значение 1 было специальным значением, которое устанавливало параметр Chunk_size в 4096.

Параметр Flags является битовой маской, которая управляет операциями, которые можно совершать над буфером вывода. По умолчанию она позволяет буферу вывода быть очищенным, сброшенным и удаленным, что равносильно значению PHP_OUTPUT_HANDLER_CLEANABLE | PHP_OUTPUT_HANDLER_FLUSHABLE | PHP_OUTPUT_HANDLER_REMOVABLE, или PHP_OUTPUT_HANDLER_STDFLAGS как сокращение этой комбинации.

Опишем константы и соответствующие им функции:

PHP_OUTPUT_HANDLER_CLEANABLE - ob_clean(), ob_end_clean(), и ob_get_clean().

PHP_OUTPUT_HANDLER_FLUSHABLE - ob_end_flush(), ob_flush(), и ob_get_flush().

PHP_OUTPUT_HANDLER_REMOVABLE - ob_end_clean(), ob_end_flush(), и ob_get_flush().

Функция Ob_start возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Добавить комментарий

Имя:
Текст комментария: