[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вложенная буферизация или компиляция шаблонов
kein
Требуется написать функцию/класс которые позволяет компилировать шаблоны, а точнее:
Имеем файлы:
index.html
PHP
h1>Header< /h1>
<?
php
 
if ($a!=0){
    
define('ERROR_NUM',51231);
    
$r compile('error.html');
    echo 
$r;
} else {
?>

error.html
HTML
You have some error, error num: <?php echo ERROR_NUM;?>


Та самая функция которую надо написать: compile($filename) return: string

Фообщем сначала была идея буферизации вывода
вроде:
PHP
ob_start();
include 
$file;
$return ob_get_clean();
ob_end_clean();
return 
$return;

Но с самого начала я её отбросил, так как при вложенных вызовах фунции ob_end_clean(), буфер затирается и ничего неработает.

Знаю смарти компилирует шаблоны(свой стандарт), но мне нужно использовать php функции в шаблонах и нехочется использовать смарти ради такой мелочи.

да, примеры простые, можно просто инклудить файлы, но это всего лишь примеры, на практике куча классов, надо что-то делать...



Спустя 58 минут, 45 секунд (24.08.2009 - 01:34) kein написал(а):
Проблема решенна
PHP
function compile(){

        
$buffer '';
        while(
ob_get_level()){
            
$buffer .= ob_get_contents();
            
ob_end_clean();
        }
        
ob_start();
        include 
$file;
        
$return ob_get_clean();
        
ob_end_clean();
        
ob_start();
        echo 
$buffer;
        return 
$return;
}

Спустя 2 минуты, 34 секунды (24.08.2009 - 01:37) Nikitian написал(а):
Моё имхо: логика отдельно, представление отдельно. В шаблонах только метки подстановки контента и никакой логики. Компиляция шаблона - это случаем не кеширование имеете ввиду?

Спустя 7 часов, 34 минуты, 42 секунды (24.08.2009 - 09:11) kein написал(а):
Нет, все таки логику в шаблонах я организовываю. но минимум
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.