Tach.
Besonders gut gelöst ist das ohnehin nicht.
Wie wäre es besser?
Meiner Meinung nach ist das Bereitstellen der Inhalte, die das Templatemodul in die Templates füllt, Aufgabe des aufrufenden Programms. Das Templatemodul sollte nicht bei jedem übergebenen Inhalt prophylaktisch überprüfen, ob's nicht nur eine "normale" Zeichenkette ist oder ob sich dahinter nicht zufällig der Name einer existierenden Datei verbirgt, die dann eingebunden wird. Solche "Features" machen den gesamten Programmablauf undurchsichtig(er) und eine spätere Fehlersuche langwieriger. Diesen Punkte meinte ich mit "nicht besonders gut gelöst".
Ansonsten bleibt noch der Hinweis, daß auch ein einfaches str_replace() zum Ersetzen der Platzhalter ausreicht; eine Funktion für RegExps muß hier nicht angeschmissen werden. Und das ganze Skript mit die() abzumurksen, wenn im Templatemodul was schiefgeht, halte ich auch nicht für praxistauglich. Solche Fehler sollten besser als Exceptions oder über entsprechende Rückgabewerte der jeweiligen Methoden nach oben gemeldet werden.
Ich möchte mehr lernen auf dem Gebiet. Aber irgendwie gibt es dazu nicht wirklich Infos.
Welche Infos gibt es nicht? Wenn du mit einer Suchmaschine nach "Template System" suchst, fliegen dir Ergebnisse für etliche Sprachen geradezu um die Ohren ...
Once is a mistake, twice is jazz.