Ich schreibe eine einfache Templating-Schicht in PHP, aber ich habe mich ein wenig stecken. Hier ist, wie es im Moment funktioniert:
Erstens verwende ich fetch_template
um den Inhalt der Vorlagen aus der Datenbank zu laden - das funktioniert (und ich sammle alle Vorlagen beim Start, falls Sie daran interessiert sind).
Ich verwende PHP-Variablen in meinem Vorlagencode und in der Logik - z.B.:
// PHP:
$name = 'Ross';
// Tpl:
<p>Hello, my name is $name.</p>
Ich verwende dann output_template
(siehe unten), um die Variablen in der Vorlage zu analysieren und sie zu ersetzen. Zuvor verwendete ich Template-Tags mit einer glorifizierten str_replace
Vorlagenklasse, aber das war zu ineffizient.
/**
* Returns a template after evaluating it
* @param string $template Template contents
* @return string Template output
*/
function output_template($template) {
eval('return "' . $template . '";');
}
Mein Problem, falls Sie es nicht schon erraten haben, ist, dass die Variablen nicht innerhalb der Funktion deklariert sind - daher kann die Funktion sie nicht in $template
es sei denn, ich setze sie in den globalen Geltungsbereich - was ich nicht unbedingt tun möchte. Das oder haben ein Array von Variablen als Parameter in der Funktion (das klingt noch mehr mühsam, aber möglich).
Hat jemand eine andere Lösung als die Verwendung des Codes aus der Funktion (es ist nur ein Einzeiler) in meinem Code, anstatt die Funktion zu verwenden?
Danke! Ross
P.s. Ich weiß, über Smarty und die große Auswahl an Templating-Engines gibt - ich bin nicht auf der Suche, um sie zu verwenden, so bitte nicht vorschlagen, sie. Danke!