s. Thema. Sofern die Template-Engine (TE) PHP heißt, ist das Erste ja verlockend. Aber wehe, die TE wird mal ausgetauscht ;)
Egal, was bevorzugt Ihr? Stilmäßig?
Ganz einfach. Die von mir bevorzugten "SETE" ("Super Einfache Template Engine") läuft darauf hinaus, dass im Teplate nur etwas steht wie:
§§§string§§§
Damit kann der Front-End-Entwickler dort auch etwas eintragen wie:
Was jetzt $arTPL['string'] liefert kann "sonstwas" sein, also insbesondere auch HTML, sogar Javascript. Für Sicherheit hat der Programmierer zu sorgen, der ggf. fremde Inhalte dem Context-Wechsel entsprechend behandelt, wenn er Key-Wert-Paare in $arTPL schreibt.
Selbst wenn etwas wie §§§string@@@wert1@@@wert2@@@wertN§§§ jetzt zu einem Funktionsaufruf führen würde, dann würde ich dazu neigen, für diese Funktionen eine Art "Namensraum" zu bauen, damit der Progger schon an Hand des Funktionsnamens weiß, dass er auch hier auf den Context-Wechsel zu achten hat. Also würde nicht nach einer Funktion "Name" gesucht, sondern nach "TplFunction_Name", dito auch bei einem Autoloader.
Grund: der Frontend-Entwickler ("Designer") kann die Problematik nicht übersehen.