dark-demon
d(^-^)b
о, ты всё ближе и ближе к xslt, как я и предсказывал 

Интересно, насколько сложным получился код, реализующий такую возможность. По идее, не должен быть слишком громоздким...Добавил в MACRO экспериментальную возможность
Если сравнивать с XSLT, как мне кажется, уместнее было вместо {{apply ...}} использовать {{call ...}}, так как в xslt для вызова именованных шаблонов используется <xsl:call-template name="template"/>. <xsl:apply-templates/> используется немножко для другого.Автор оригинала: pachanga
Добавил в MACRO экспериментальную возможность использовать "вложенные" шаблоны(чем-то похоже на XSLT), например так:
Код:{{template name="tpl1"}} Hello, {$name} {{/template}} {{apply template="tpl1 name="Bob"/}}
Когда я писал про замену, я имел ввиду, что, если MACRO и дальше будет противопоставляться XSLT, то использование apply, может ввести знающих XSLT в заблуждение.Автор оригинала: dark-demon
с другой стороны - нет смысла вводить макрос "звонить", если свободен "применить"..
Вот уж ленивый. Мог бы выложить выдержку из кода, так сказать концепцию, я ведь тоже ленивый.У тебя всегда есть возможность посмотреть исходники
Да мне не сложно, просто мусорить не хотел, ну да ладно:Автор оригинала: atv
Вот уж ленивый. Мог бы выложить выдержку из кода, так сказать концепцию, я ведь тоже ленивый.
class lmbMacroTemplateTag extends lmbMacroTag
{
function generateContents($code)
{
$name = $this->get('name');
$args = $code->getTempVarRef();
$code->beginMethod('_template'. $name, array($args . '= array()'));
$code->writePHP("if($args) extract($args);");
parent :: generateContents($code);
$code->endMethod();
}
}
class lmbMacroApplyTag extends lmbMacroTag
{
function generateContents($code)
{
$name = $this->get('template');
$args = $this->_attributesIntoArray();
$arg_str = 'array(';
foreach($args as $key => $value)
$arg_str .= "'$key' => $value,";
$arg_str .= ')';
$code->writePHP('$this->_template'. $name . '(' . $arg_str . ');');
}
protected function _attributesIntoArray()
{
$arr = array();
foreach($this->attributes as $k => $attribute)
$arr[$k] = $this->getEscaped($k);
return $arr;
}
}
Не-не, я просто категорически против XML подобного синтаксиса по причинам, которые уже оговаривал где-то вначале треда.Автор оригинала: atv
Ну так смотри, почему бы тебе по такому принципу не сделать поддержку для XSL синтаксиса? Т.е. чтобы XSL шаблоны компилировались в PHP код, с возможностью подсовывать его вместо стандартного XSLT процессора? Потом можно было бы добавить дополнительные возможности, которых не хватает в XSLT. Рулезная была бы штука.
Давай аргументированно, а то отвечать на посты типа "имхо бреадд" совершенно нет никакого желания.Автор оригинала: dark-demon
весьма неубедительные причины...