Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function parse($str, $variable)
{
if (is_array($variable))
{
foreach($variable as $name => $var)
{
$str = str_replace("{{".$name."}}", $var, $str);
}
}
return $str;
}
/**
* Применение шаблона.
*
* Шаблон представляет собой HTML-файл с PHP-вставками. Во вставках
* можно использовать переменные из массива $variables, на основе каждого
* элементв key => value определяется переменная с именем $key и значением
* $value.
*
* @param $file Имя файла шаблона.
* @param $variables Массив переменных и их значений, доступных в PHP-вставках
* шаблона.
* @return HTML-код, созданный на основе шаблона и переменных $variables.
*/
function template_render($file, $variables) {
extract($variables, EXTR_SKIP);
ob_start();
require "$file";
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
function parse($template, array $vars) {
$keys = array_keys($vars);
foreach($keys as &$key) {
$key = '{{'.$key.'}}';
}
return str_replace($keys, $vars, $template);
}
function ratherFastVars( $text, $vars ){
if( ($p1 = mb_strpos( $text, '%' )) !== false ){
$arr1 = array_keys( $vars );
$arr2 = array_values( $vars );
array_walk( $arr1, 'wrapperCallback');
$text = str_replace( $arr1, $arr2, $text );
}
return $text;
}
$wrapperCallbackShit = array( '{{', '}}' );
function wrapperCallback( &$val ){
global $wrapperCallbackShit;
$val = $wrapperCallbackShit[0]. $val .$wrapperCallbackShit[1];
}
Хотя я тестировал на пхп 4я смотрю у вас консервативные взгляды на php :)
def show @feeds = Rss.all end
<?php
require_once ROOT .'models/faq.class.php'; // подключение модели
$aFaqs = Faq::getList();
include $this->inject('misc/faq'); // тут подключение шаблона
$tpl = new Smarty();
// вот он слой: контроллер представления - это подготовка данных для шаблона
$tpl->assign('var', 'Hello');
$tpl->display('template.tpl');
$tpl = new Blitz('template.tpl');
//слой: контроллер представления
$data = array('var', 'Hello');
$tpl->parse($data);
Как следствие, шаблоны с ростом проекта не превращаются в кашу.
И как может blitz работать быстрее чистого php?
Могу ошибаться, но мне всегда казалось, что Андрей негативно отзывается о Smarty =)Назови мне того, кто о нем отзывался не негативно…
тесты устарели, их надо менять. это кропотливая работа, но я это сделаюБыло бы хорошо, чтоб это сделал автор статьи, ты и так очень занят. А те кто давно используют блиц и без тестов знают, что он самый быстрый из всего доступного… Жаль, что Onk не хочет открывать свою поделку.
Введение в шаблонизатор Blitz