texrdcom
Новичок
Прочитал топик интерестный согласен с Фанатом
как не крути а представления от логики четко не отделить,
в инете видел интереструю вещь человек кодировал
таблицу какую надо нарисовать с помощью букв тоесть функция выглядела так
Более подробно
но если глянуть со стороны (и послушать высказывания "это миф что можно отделить полностью логику от представления - и это правильно так как мы стараемся соединить php - html - две разные вещи!")
Получаеться что все выше описанные методы доступны в том же smarty - можно его использовать, или написать свой похожий шаблонизатор!.
-~{}~ 12.05.05 14:01:
Более подробно: http://xpoint.ru/forums/development/analysis/thread/28649.xhtml
как не крути а представления от логики четко не отделить,
в инете видел интереструю вещь человек кодировал
таблицу какую надо нарисовать с помощью букв тоесть функция выглядела так
PHP:
function table($table,$style='',$values='')
{
if(isset($this->cache[$table]))
{
if($values=='')$values=&$this->data;
$values['nbsp']=' ';
$values['style']=($style)?" class='".$style."'":"";
return preg_replace("/\[(\w+)\]/e", "\$values['\\1']",$this->cache[$table]);
}
if(preg_match_all("/\((\w+)\)|\[(\w+)\]/",$table,$matches)){
$values['style']=($style)?" class='".$style."'":"";
$rowspan=array();
if($values=='')$values=&$this->data;
$values['nbsp']=' ';
// WARNING! REVERSE table construction.
$out=(preg_match('/\}$/',$table))?"</table>\n":"";
for ($i = count($matches)-1; $i > 0; $i--){
$el=($i>1)?'td':'th';
for ($j = count($matches[$i])-1; $j >= 0; $j--){
if(strlen($matches[$i][$j])){
$out="</tr>\n".$out;
$cols=1;
for($l = strlen($matches[$i][$j])-1; $l >= 0 ; $l--){
$a=$matches[$i][$j]{$l};
if(isset($matches[$i][$j-1]{$l})&& $j!=0 && $a==$matches[$i][$j-1]{$l}) @$rowspan[$a]++;
if(($l==0)||($l>0 && $a!=$matches[$i][$j]{$l-1})){
$cs=($cols==1)? "":" colspan='".$cols."'";
$cl=" class='".$a."'";
$search[$a] = (isset($values[$a])) ? "[".$a."]" : "[nbsp]";
if (isset($rowspan[$a])&&(($j!=0&&$a!=$matches[$i][$j-1]{$l})||($j==0))){
$rs=" rowspan='".((int)$rowspan[$a]+1)."'";
$rowspan[$a]=1;
$out= "<".$el.$cs.$rs.$cl.">".$search[$a]."</".$el.">\n".$out;
} else $rs="";
if (!isset($rowspan[$a]))$out="<".$el.$cs.$cl.">".$search[$a]."</".$el.">\n".$out;
$cols=1;
}else $cols++;}
if($table{0}=="{")$out= "<tr>\n".$out; else $out= "<tr[style]>\n".$out;
}}}
$out=($table{0}=="{")?"\n<table[style] border='1'>\n".$out:$out;
$this->cache[$table]=$out;
return preg_replace("/\[(\w+)\]/e", "\$values['\\1']", $out);
}
else mess('cannot render table ['.$table.']','warn');
}
// Таблица обозначалась так
$table =
'{(LCR)'
.'[qwe]'
.'[asd]'
.'[mmm]'
.'[zrt]'
.'[zfg]'
.'[zvb]}';
но если глянуть со стороны (и послушать высказывания "это миф что можно отделить полностью логику от представления - и это правильно так как мы стараемся соединить php - html - две разные вещи!")
Получаеться что все выше описанные методы доступны в том же smarty - можно его использовать, или написать свой похожий шаблонизатор!.
-~{}~ 12.05.05 14:01:
Более подробно: http://xpoint.ru/forums/development/analysis/thread/28649.xhtml