шаблонизатор с нативным php

Тема в разделе "PHP", создана пользователем arrecck, 30 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. arrecck

    arrecck Создатель

    Регистр.:
    18 фев 2009
    Сообщения:
    18
    Симпатии:
    0
    Собственно кто какие методы использует, include, include с буферизацией.Возможно есть более интересное решение, про шаблонизаторы с псевдокодом писать не надо
     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Что ты понимаешь под псевдокодом?
     
  3. arrecck

    arrecck Создатель

    Регистр.:
    18 фев 2009
    Сообщения:
    18
    Симпатии:
    0
    %%some_var%% в html допустим, которая используется в регулярном выражении для подстановки, в большинстве классов шаблонизаторов что то похожее
     
  4. lonejan

    lonejan Постоялец

    Регистр.:
    7 фев 2008
    Сообщения:
    110
    Симпатии:
    10
    Я делаю так:

    В .htaccess настроен на передачу управления в index.php (ЧПУ)

    Код:
    AddDefaultCharset UTF-8
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [L,QSA]
    
    Дальше идет разбор параметров в index.php

    PHP:
    <?php
    // Разбираем ЧПУ
    function extract_parameters($array)
    {
        
    $c=sizeof($array);
        
    $tmp_array=array();
        for(
    $i=0$i<$c$i++){
            if ((
    trim($array[$i]) != "") and (trim($array[$i]{0}) != '?')){
                
    $tmp_array[]=trim($array[$i]);
            }
        }
        return 
    $tmp_array;
    }
    $_SERVER['REQUEST_URI'] = rawurldecode($_SERVER['REQUEST_URI']);
    $param=$_SERVER['REQUEST_URI'];
    $params=explode("/",$param);
    $in_data=extract_parameters($params);    // Массив $in_data содержит входные параметры ЧПУ
    unset($params);
    unset(
    $param);
    $html = array();
    ...
    //Тут идет передача управления в PHP скрипт для обработки запроса
    //По ходу выполнения, скрипты заполняют массив $html
    ...
    require 
    'template.php';    // Шаблонизатор
    ?>
    По ходу выполнения заполняется массив $html, например

    PHP:
    $html['header']['title'] = 'Тайтл';
    ...
    $html['sidebar']['menu'][] = array('name' => 'Пункт меню 1''url' => '/link1''type' => 'expanded_menu');
    $html['sidebar']['menu'][] = array('name' => 'Пункт меню 2''url' => '/link2''type' => 'collapsed_menu');
    ...
    $html['footer']['copyright'] = 'Some text...';
    Вот код template.php
    PHP:
    function load_template($data,$template_name){
        global 
    $template_path,$themes;
        @require 
    $template_path.$template_name.'.tpl.php';
    }

    $template_path 'templates/frontend/';
    reset($html);
    foreach(
    $html as $key => $value){
        
    $data $value;
        
    load_template($data,$key);
    }
    Вот пример шаблона sidebar.tpl.php
    PHP:
    <div id="menu">
    <ul>
    <? foreach($data as $val){ ?>
    <li>
    <? load_template($val,$val['type']); ?>
    </li>
    <? } ?>
    </ul>
    </div>
    Дальше текст expanded_menu.tpl.php
    PHP:
    <a href="<?=$data['url']?>" class="left-menu-item-expanded"><?=$data['name']?></a>
    Текст collapsed_menu.tpl.php
    PHP:
    <a href="<?=$data['url']?>" class="left-menu-item-collapsed"><?=$data['name']?></a>
    В коде разобраться не сложно, хотя, может, пример с меню не совсем наглядный.
     
  5. antn

    antn Постоялец

    Регистр.:
    11 июл 2009
    Сообщения:
    104
    Симпатии:
    30
    Раньше пользовался Smarty, недавно перешёл на его облегчённо-переписанного клона: Quicky. Оба они используют шаблоны с "псевдокодом", которые при первом же использовании единожды компилируются в нативный PHP-код.
     
  6. General Fizz

    General Fizz Боевой Генерал :)

    Регистр.:
    11 апр 2007
    Сообщения:
    753
    Симпатии:
    396
    Blitz использую, считаю что самый шустрый после native php. Да и достаточно удобный.
     
  7. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    zend_view попробуй
     
  8. arrecck

    arrecck Создатель

    Регистр.:
    18 фев 2009
    Сообщения:
    18
    Симпатии:
    0
    спасибо щас почитаю документация, посмотрю как там с реализацией,
    вот нашел еще ссылку может кому нить будет интересно почитать
     
  9. juggernaut13

    juggernaut13 Постоялец

    Регистр.:
    23 авг 2009
    Сообщения:
    59
    Симпатии:
    16
    require_once для простеньких скриптов, подключаю шаблон в нем php инструкции идет работа с переменными доступными от скрипта который вызывает
     
  10. arrecck

    arrecck Создатель

    Регистр.:
    18 фев 2009
    Сообщения:
    18
    Симпатии:
    0
    еще ссылка на проект шаблонизатора, где используется нативный php
    Пока не разбирался, вечером буду все смотреть, тогда отпишу о своих впечатлениях
     
Статус темы:
Закрыта.