Помогите понять как в шаблонизаторе задействовать использование if'ов, блоков и т.д.
Смотрел шаблонизаторы но не понял:
for($i = 0;$i < $count_ifs;$i ++)
{
$var = $this -> _get_var($ifs[$i][4], false);
$chapter1 = 'isset('.$var.') && ';
if(!empty($ifs[$i][8]))
{
// если это переменная
if($ifs[$i][10] == '$'.$ifs[$i][11])
{
$var2 = $this -> _get_var($ifs[$i][11], false);
$chapter1 .= 'isset('.$var2.') && ';
$strlen = strlen($ifs[$i][10]);
$chapter2 = $var.substr($ifs[$i][8], 0, -$strlen).$var2;
}
else
{
$chapter2 = $var.$ifs[$i][8];
}
}
else
{
if($ifs[$i][2] == '!')
{
$chapter1 = '!isset('.$var.') || ';
if($ifs[$i][3] == '~')$chapter2 = '!(bool)'.$var;
else $chapter2 = $var.' !== true';
}
else
{
if($ifs[$i][3] == '~')$chapter2 = '(bool)'.$var;
else $chapter2 = $var.' === true';
}
#if($ifs[$i][3] == '~')$chapter2 = ($ifs[$i][2] == '!' ? '!' : null).'(bool)'.$var;
#else $chapter2 = $var.($ifs[$i][2] == '!' ? '!' : '=').'== true';
}
Если чесно, я потерялся вот в этих вот фичах:
$ifs[$i][4]
Заранее спасибо
1, вообще, я там много намудрил.
Смотря регулярку, можно понять что в $ifs[$i][4] хранится переменная.
Т.е, из шаблона
{if $var}
...
{/if $var}
будет получено $var.
Morgan, я не понимаю что такое
$ifs[$i][8]
$ifs[$i][10]
$ifs[$i][11]
и т.д.
Откуда оно берёться?
6,
Цитата:
"$ifs[$i][4] = $var"
- нет
после preg_match_all(...) сделай print_r($ifs), или var_dump($ifs);
Цитата:
"Что именно ты считаеш намудрённым?"
систему обработки этих блоков.
Morgan, а почему бы preg_replace не заюзать?
И еще как это всё (скомпилированый шаблон) выводить? Как лучше? Если через echo ''; то не пойму как будет тогда работать пхп код (<?php ?>), не пойму как это можно зделать через eval() или это всё выводить вобще через include ?
9, в SomeTemplate делается include шаблонов.
Цитата:
"а почему бы preg_replace не заюзать?"
а кто будет обрабатывать внутренние блоки?