Вы не зашли.
Главная » PHP » Какой шаблонизатор выбрать?
#1. TLENS Off (14)
Moderator
2014.11.13 05:05
Вот только начал разрабатывать проект и столкнулся с выбором шаблонизатора.
Начал работать с твиг очень выручает наследование. Но это единственная причина почему я его взял. Уж сильно он тормознутый.
Вот нарыл пыховский шаблонизатор поддерживающий наследование http://phpti.com/. Но немного настораживает.
Так же пересматривал компонент шаблона из симфони. Но в доках phpEngine так и не нарыл как наследовать.
#2. Gemorroj Off (107)
Administrator
2014.11.13 11:11
да наследование сейчас уже все поддерживают, вроде.
мне не нравятся php-подобные шаблонизаторы типа этого phpti. слишком много возможностей выстрелить себе в ногу.
Добавлено спустя   1 минуту  27 секунд:
я бы таки остановился на проверенных твиге или смарти. оба наследование поддерживают, оба имеют хорошую репутацию.
смарти недавно на гитхаб перешел, кстати.
#3. TLENS Off (14)
Moderator
2014.11.13 14:02
Gemorroj написал:
php-подобные шаблонизаторы типа этого phpti. слишком много возможностей выстрелить себе в ногу
И я о том же.
Но с другой стороны. twig делает больше операций чем ввесь сайт.
Есть подозрения что для трехстраничника будет глупо использовать твиг.
К тому же кеширование не прокатит так как странички динамичные.
#4. Gemorroj Off (107)
Administrator
2014.11.13 15:03
Ну, для 3-х страничника тогда можно что попроще, хоть чистый php smile или если поэксперементировать, то можно js шаблонизаторы порпобовать. Handlebars, например.
#5. TLENS Off (14)
Moderator
2014.11.13 16:04
Gemorroj написал:
Handlebars, например
Глупости. А как же индексация, адаптивность к кирпичам и т.д.
У меня мой мейнсайт состоит из трех страничек. Главная, поиск и предосмотр. Ну там вообще велокоптер))
Есть абстрактный класс Педж  его наследуют такие как HTML а этого уже наследует VideoSearch например. Короче так же используется буферизация что то вроде
Код:
span style="color: #0000BB"><?phpob_start();include __DIR__ .'/../../_TEMPLATE/VideoSearch.php';$this->_content .= ob_get_clean();
В общем сам класс хранит в себе все необходимое: тайтл, дескрипшен, заголовки и т.д.
В двух словах выглядит все ужасно.
#6. Gemorroj Off (107)
Administrator
2014.11.13 17:05
поисковики уже давно нормально парсят js. просто так чтоли гугель v8 пилит.
#7. TLENS Off (14)
Moderator
2014.11.13 18:06
Gemorroj написал:
поисковики уже давно нормально парсят js. просто так чтоли гугель v8 пилит.
И все же я предпочитаю воздержатся
#8. TLENS Off (14)
Moderator
2014.11.13 20:08
Сделал свой велосипед на основе phpti. Как тебе?
Шаблонизатор:
Код:
span style="color: #0000BB"><?phprequire_once __DIR__ . '/../include/ti.php';function template($path, $_parameters = []) { // Создаются переменные для прямого запроса из шаблона foreach ($_parameters as $key=>$value) ${$key} = $value; // Убираем теперь ненужную переменную unset($_parameters); ob_start(); $ob_level = ob_get_level(); // Подключаем шаблон include $path; // сбрасываем накопившиеся внутри шаблона буферы while(ob_get_level() > $ob_level) ob_end_flush (); // Вуаля return ob_get_clean();}
Базовый шаблон "base.html.php":
Код:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><?=$title?></title>
<meta name="description" content="<?=$description?>" />
</head>
<body>
<div class="content">
<?emptyblock('content')?>
</div>
</body>
</html>
Управляющий шаблон "home.html.php":
Код:
span style="color: #0000BB"><?php$title = htmlentities($video->title);$description = htmlentities($video->description);include __DIR__ . '/base.html.php';?><? startblock('content')?><h1><?=htmlentities($video->title)?></h1><p><?=htmlentities($video->description)?></p><? endblock() ?>
Пример использования:
Код:
$content = template('../template/home.html.php', [
'video'=>(object)[
'title'=> "Видео \"тайтл\"",
'description' => "Видео \"Дескрипшен\"",
]
]);
 
highlight_string($content);
Результат:
Код:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Видео &quot;тайтл&quot;</title>
<meta name="description" content="Видео &quot;Дескрипшен&quot;" />
</head>
<body>
<div class="content">
<h1>Видео &quot;тайтл&quot;</h1>
<p>Видео &quot;Дескрипшен&quot;</p>
</div>
</body>
</html>
Мне данный вариант очень понравился. Все понятно, быстро, и самое главное ПРОСТО. Так же не глобальная погрузка минимизировала возможность как ты говоришь "выстрелить себе в ногу".
Страниц: 1
Главная
WEB
PunBB Mod v0.6.2
0.014 s