AGAVA partners programs http://agava.ru/partners/            

Название функции

             
Веб-курсы


Что это?

Оглавление

Основы
Основы основ

Практика
Гостевая книга
Простой сайт
Структура сайта (MVC)
Ядро (Light)
Ядро
Гостевая на SQL
Статические страницы
Модуль новостей
Система регистрации

Теория
Дебаггинг
Регулярные выражения
Введение в ООП
Паттерны проектирования

Репозитарий
BB-code
Почтовый класс
Пагинатор
Всякие полезности

Download
Полезные утилиты

Разное
Видеокурсы
Последние изменения
Вопросы и замечания сюда



Реклама

Диеты для похудения
Фреймворк Kohana. Обучение. Мануал на русском.







Буферизация

Буферизация, это такая штука, которая собирает весь вывод и упаковывает в переменную. Вот наглядно:

1
2
3
4
5
6
7
8
9
10
11
<?php


    ob_start
(); 
      
    echo 
'Всякий текст'
     
    
$buffer ob_get_contents(); 
    
ob_end_clean();
Если это запустить в браузере, никакого текста не будет. То есть функция echo не отправляет строку браузеру, а пишет в буфер, то есть в память. Функция ob_start() начинает буферизацию, функция ob_get_contents() считывает данные из буфера, а ob_end_clean() очищает его.

Если теперь сделать так:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php


    ob_start
(); 

    echo 
"Всякий текст"
     
    
$buffer ob_get_contents();  
    
ob_end_clean(); 
     
    echo 
$buffer;

То можно убедиться, что текст находится в переменной, куда мы считали его из буфера.
Для чего это надо. Для того, что бы не вызвать ошибку при отдаче заголовков, потому что заголовки должны отправляться раньше вывода. А теперь мы можем спокойно сделать это позже. Вот так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php


    ob_start
(); 
     
    echo 
"Всякий текст"
     
    
$buffer ob_get_contents();  
    
ob_end_clean(); 
     
    
header("Content-Type: text/html; charset=utf-8"); 
    echo 
$buffer;

Вывод у нас по коду вроде как выше, но заголовок будет передан браузеру перед остальным текстом. Это касается так же старта сессий и установки кук.
Буферизировать можно не только echo но и любой другой вывод. Допустим так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php


    ob_start
(); 
?> 
<div style="trxt" > 
<?php  echo "Всякий текст";  ?> 
</div> 
<?php

    $buffer 
ob_get_contents();  
    
ob_end_clean(); 
     
    
header("Content-Type: text/html; charset=utf-8"); 
    echo 
$buffer;

Рейтинг@Mail.ru Рейтинг@Mail.ru Яндекс цитирования
irbis-team © 2009