Irgendwie verstehe ich das nicht.
In dem Beispiel Code von gaaanz oben sieht dein Platzhalter wie folgt aus {lastchange}.
Deine setValue Methode baut die Platzhalter wie folgt auf (am Beispiel von "change" aus deinem Codesnippet): {change} CONTENT {/change}.
Das eigentliche ersetzen erfolgt dann in insert() mit dem preg_match_all. Dort nimmst du alles wieder auseinander, die matches werden dann in loops gegen den Content getauscht. Alles läuft über den $insert, was ein String ist. Hmm, ich finde das alles sehr kompliziert und mit dem preg_match_all, der folgenden foreach Schleife nicht gerade performant.
Weitere Probleme habe ich auch mit der loadContent() Methode. Diese hat als Rückgabewert den Inhalt des Templates (oder was da included wird).
Diese Methode der klasse rufst du wie folgt auf:
$t->loadcontent($_GET['content']);
Wohin wird denn da der return $newcont zurückgegeben?
Wäre es nicht wie folgt einfacher:
Dein Template enthält die Platzhalter in der Form {lastchange}, so wie du es bis jetzt auch hast.
Deine SetValue() Methode würde ich umschreiben zu:
PHP:
public function setvalue($tag, $value)
{
// vorher in der klasse noch ein private $platzhalter;
$complete_tag = '{'.$tag.'}';
$this->platzhalter[$complete_tag] = $value;
}
Nun wird das Template geladen sagen wir mal in klassenvariable $this->template (als Beispiel, bei dir in der insert() mit file_get_contents
)
Jetzt werden einfach die Tags ersetzt durch die Values
Beispiel:
PHP:
function parsetemplate()
{
echo str_replace(array_keys($this->platzhalter), array_values($this->platzhalter), $this->template);
}
Das ganze weicht natürlich stark von deinem Ablauf ab und ist nur eine grobe Idee und ich weiss nicht, ob dies überhaupt eine gute Umsetzung hinsichtlich Geschwindigkeit ist (dieses str_replace konstrukt mit array_keys und _values).
Ansonsten einfach mein Post ignorieren