Witam, poradziłem sobie z problemem już

Jakby ktoś chciał skożystać z mojej mini klasy do szablonów to zapraszam. Klasa na miała tylko na celu być szybka, bez zbędnych wodotrysków, oraz obsługiwać instrukcje if i foreach oraz rozpoznawać i zostawiać w spokoju zmienne globalne $_***. Klasa ta nie ma obsługi błędów typu: nie wyświetli się żaden komunikat jeśli nie został zamknięty foreach albo nie została zadeklarowana jakaś zmienna (to akurat notice), ale to dla mnie akurat lepiej było bo sam z góry mogę tym kontrolować. jakby ktoś chciał ją użyć i miał jakieś uwagi to proszę w tym wątku odpowiadać (wiem wiem- temat nie na to forum, ale jak już tutaj zaczołem to po co zaśmiecać:P)
ps. sorka za nei trzymanie się żadnych standardów kodowania, ale pisze jak lubie:)
ps2. nei ma żadnej instrukcji obsługi bo klasa jest banlna i każdy się domyśli (chyba:P)
ps3. jak używasz tego skryptu to możesz dać o tym znać (wtedy się podbudowywuje:P)
<?php
function Template_callback($match)
{
if(substr($match['1'],0, 2)==='if') return '<?php if('.(preg_replace(\"/$([^_][w]*)/\", '$this->add['1']',substr($match['1'],3))).'): ?>';
else if(substr($match['1'],0, 3)==='/if') return '<?php endif; ?>';
else if(substr($match['1'],0, 7)==='foreach') return '<?php foreach('.(preg_replace(\"/$([^_][w]*)/\", '$this->add['1']',substr($match['1'],8))).'): ?>';
else if(substr($match['1'],0, 8)==='/foreach') return '<?php endforeach; ?>';
else return '
<?php echo '.(preg_replace(\"/$([^_][w]*)/\", '$this->add['1']', $match['1'])).'; ?>';
}
class Template
{
var $add=Array();
var $dir='templates/';
var $dir_c='templates_c/';
var $force=false;
function _make_file($fileName)
{
$tplString = implode(file(($this->dir).$fileName));
if (!$handle = fopen($this->dir_c.$fileName.'.php', 'w')) exit('Cannot open file '.$fileName);
if (!fwrite($handle, preg_replace_callback(\"/{(.*?)}/\", 'Template_callback', $tplString))) exit('Cannot write to file '.$fileName);
fclose($handle);
}
function display($fileName)
{
if(!is_file($this->dir_c.$fileName.'.php') || $this->force ) $this->_make_file($fileName);
include($this->dir_c.$fileName.'.php');
}
function fetch($fileName)
{
if(!is_file($this->dir_c.$fileName.'.php') || $this->force ) $this->_make_file($fileName);
ob_start();
include($this->dir_c.$fileName.'.php');
$tplReturn = ob_get_contents();
ob_end_clean();
return $tplReturn;
}
}
?>