aber jetzt weiß ich nicht genau was ich genau falsch gemacht habe, und dein code versteh ich auch nicht so recht.
also preg_replace_callback(meinesuche, meinfunctionsaufrufbeigefunden, von code);
soweit komm ich mit.. aber was ist an meinem genau falsch gelaufen? ich kenne eval nicht und bei php.net hab ich auch nichts in meinem zusammenhang gefunden.
Ich versteh hier gerade nix. aber funktionieren tut es
und funktionieren tut es bisher auch nur mit echo $this->compile(); also der rückgabewert des return von der compile funktion.
so sieht das ding nun aus:
Code: Alles auswählen
function display($handle)
{
if ($handle != '')
{
if (isset($this->file[$handle]))
{
echo $this->compile($handle);
return true;
}
else
{
die('Template->display(): You have to add the template before display');
}
}
else
{
return false;
}
}
/**
*
* get all assigns for compile
*
**/
private function getAssign($r)
{
$k = &$r[1];
return isset($this->assigns[$k]) ? $this->assigns[$k] : '';
}
/**
*
* compile the template
*
* @access private
* @param string $handle
*
**/
private function compile($handle)
{
$code = file_get_contents($this->root . $this->file[$handle]);
//
// replace \ with \\ and then ' with \'
//
$code = str_replace('\\', '\\\\', $code);
$code = str_replace('\'', '\\\'', $code);
//
// parse single assigns
//
return preg_replace_callback('/\{(.*)\}/is', array(&$this, 'getAssign'), $code);
}
und er parst nur einmal... also nicht alle {lala} sondern nur das erste..