Буферизация ob_start, ob_flush, ob_get_contents, ob_clean
- Подробности
- Категория: PHP
- Просмотров: 341
Сегодня поговорим о буфере в PHP...
Буферизация - это когда мы собираем сперва все данные в буфер, потом можем его обрабатывать и потом уже только в нужном месте выводим. В отличие, от обычного echo - оно выводит сразу.
Основные функции буфера
1. для начала мы должны объявить место начала буферизации при помощи функции ob_start()
2. после первого пункта начался уже буфер и тут мы собираем разные данные.
3. После сбора данных, надо их присвоить в переменную при помощи функции ob_get_contents()
4. Далее идет процесс очистки и вывода:
а) ob_clean() - эта функция очищает буфер и ничего не выводит!
б) ob_flush() - наоборот выводит, но ничего не очищает из буфера
в) ob_end_clean() - очищает буфер и отключает буферизацию
г) ob_end_flush () - выводит из буфера, завершает буферизацию и ничего из буфера не удаляет!
Пример:
<?php
// включаем буфер
ob_start();
// выводим информацию
echo "Я изучаю буфер в PHP";
// сохраняем всё что есть в буфере в переменную $content
$content = ob_get_contents();
// отключаем и очищаем буфер
ob_end_clean();
echo $content;
Как видите внутри есть вывод при помощи echo (я изучают буфер в PHP) - именно вывод буферизируется. Если установить переменную и не вывести ее, то смысла не будет.
ob_start
В ob_start() первым параметром можно передать callback функцию, то есть которая сработает при вызове.
Например:
function ob_handler ($buffer, $phase) {
return "Длина строки '$buffer' is ". strlen($buffer);
}
ob_start('ob_handler');
echo "I learn buffer in PHP";
ob_end_flush();
Вывод такой : Длина строки 'I learn buffer in PHP' is 21