[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Класс для построения шаблонов
Страницы: 1, 2, 3, 4
twin
Цитата (McLotos @ 25.12.2014 - 06:47)
twin
со своими задачами он справляется. Есть шаблоны полностью на html, есть чистый php без html-тэгов, и есть класс который получив значения переменных находит их в шаблоне и заменяет, если переменная массив, то он копирует элемент и вставляет его повторно с новым значением.
По-моему он не сильно отстал от того же xTemplate, и в чем-то даже обошел, например в том что у xTemplate ограничение по вложенности блоков, а тут его нет.

Я разве говорил, что не справляется? Я говорил, что он решает непрофильные задачи. Допустим кэширование. А если захочется применить другой способ кэширования? Или вообще обойтись без него? Или тот же разбор массива. Получается мы дожлны сначала массив сформировать, потом обратно разобрать. Это бизнес-логика вообщето, а шаблонизатор относится к вьюшке. Другими словами класс слишком много на себя берет.

Более подробно не смотрел, не оставил надежды увидеть действующий пример.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
McLotos
Т.е. если мне нужно вывести список авто, то я подключаю list.htm и дальше мой класс сверяясь с данными переданного массива копирует этот div нужное количество раз

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
chee
Мои замечания, при быстром просмотре:
1. В методе translate можно использовать strtr
2. Методы лучше делать защищенными, а не приватными, что бы можно было расширять класс.
3. Сделать системы плагинов, и создать плагин для распаковки BB кодов
4. Найчитесь оформлять нормально комментарии, /* */, # это рудемент к которому не применяется автоформатирование
5. Называйте методы одинаково, не надо публичные методы начинать с заглавной буквы.
6. Уберите бесмысленные сравнения

if ($elem->hasAttributes() === TRUE) {
if (array_key_exists($attr->nodeValue, $this->vars) === TRUE) {
if (is_array($this->vars[urldecode($attr->nodeValue)]) === TRUE) {
if (empty($args[2]) === FALSE) {
а нужно

if ($elem->hasAttributes()) {
if (array_key_exists($attr->nodeValue, $this->vars)) {
if (is_array($this->vars[urldecode($attr->nodeValue)])) {
if (!empty($args[2])) {

7. Не надо комментировать, что делает код. Лучше комментируйте какие типа имеют свойства, и какие типу у аргументов в методах.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
McLotos
Цитата (twin @ 25.12.2014 - 13:06)
ругой способ кэширования? Или вообще обойтись без него?

Никто не запрещает убрать кэширование, тем более что здесь это банальное сохранение в файл, которое отключается в случае если в ShowPage передана переменная

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
volter9
Цитата (McLotos @ 25.12.2014 - 11:05)
Цитата (volter9 @ 25.12.2014 - 12:57)
если потребуется создать пару шаблонов или вложенных шаблонов, то весь код быстро превратится в говнокод.

Почему? Не понял.
Ну вот например тот-же test.carlux, на который я давал ссылку выше. Полностью построен этим классом.
Вот его шаблоны
header.html
<!DOCTYPE html>
<html>
<head>
<meta
name="charset" content="{HEAD.Charset}" />
<meta
name="robots" content="{HEAD.Robots}"/>
<title>
{HEAD.Title}</title>
<meta
name="keywords" content="{HEAD.Keywords}" />
<meta
name="description" content="{HEAD.Description}" />
<meta
name="author" content="{HEAD.Author}" />
<meta
name="viewport" content="{HEAD.Viewport}"/>
<link
rel="stylesheet" href="{HEAD.Styles}" type="text/css" />
<link
rel="shortcut icon" href="{HEAD.Icon}" type="image/x-icon" />
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"&a mp;a mp;g t;</script>
<![endif]-->

<script src="{HEAD.Scripts}"></script>
<script>

jQuery(function(){
jQuery('#slider').camera({
height: '400px',
loader: 'pie',
pagination: false,
});
});
</script>

</head>
<body>
<header>
</header>
<section
id="left"></section>
<section
id="content"><div id="middle">

page.html
<div>{CONTENT.Title}
<article><div id="info">
<div
id="author">{CONTENT.Author}</div>
<div
id="date">{CONTENT.Date}</div>
</div>

{CONTENT.Article}</article>
</div>

list.html
<div id="{CONTENT.Id}" class="shortInfo">
<p
class="brand">{CONTENT.Brand}</p>
<p
class="model">{CONTENT.Model}</p>
<span>
{CONTENT.Grade}</span>
<a
href="{CONTENT.DetailsLink}"><img src="{CONTENT.Image}"></img></a>
<p>
{CONTENT.Modifi}</p>
<p
class="price">{CONTENT.Price}</p>
<p
class="year">{CONTENT.Year}</p>
<p
class="mileage">{CONTENT.Mileage}</p>
<p
class="shop">{CONTENT.Shop}</p>
</div>

А как я все это подключаю из php подробно расписано в моей статье

Вы хорошенько прочитайте что я писал :)
Я отвечал twin'у ну на счет перевод всего класса на статик.

chee
+1

_____________
Мой блог
Быстрый ответ:

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