echo $begrüßung;
Das Ding soll ja keine vollwertige Template-Engine werden, sondern lediglich auf eine ganz simple Art und Weise HTML von PHP trennen
Das Prinzip sollte sein, die Arbeitsschritte zu trennen:
EVA - Eingabe, Verarbeitung, Ausgabe
PHP wurde als in HTML eingebetteter Code erfunden. Nach diesem Prinzip arbeitet es recht effektiv. Wenn du eine mehr oder weniger aufwendige Template-Engine verwenden willst, solltest du dir einen guten Grund überlegen. "Ich trenne das, weil ich mal irgendwo gelesen habe, dass das gut ist" ist kein guter Grund. "Ich trenne das, weil die Templates jemand anderes erstellen soll, der wenig Ahnung von PHP hat" ist schon besser, doch lohnt sich der Aufwand am Ende?
(ich weiß nix anderes macht eine Template-Engine, aber ich will halt was schlichtes - ich erwarte nicht, dass das jetzt irgendwer versteht)
Das Folgende ist schlicht und trennt die Verarbeitungsschritte. Nicht abgetrennt sind die zur Ausgabe notwendigen Programmschritte. Wenn du sich wiederholende Strukturen in der Ausgabe haben willst, kannst du schwer auf irgendwelchen Code verzichten, der z.B. ein foreach macht oder die Template-Engine eins ausführen lässt. HTML hat keine Wiederholungslogik. Wie löst du nun dieses Problem, wenn "HTML von PHP getrennt" sein soll? Fügst du statt PHP-Code Template-Engine-Code ein?
beispiel.php
------------
<?php
// bei feststehendem Wert kann der <title> natürlich gleich ins Template geschrieben werden.
$title = erzeuge_Title();
$values = Eingabedaten_verarbeiten();
include 'ausgabe_helfer.php';
?>
<!DOCTYPE ...>
<html>
<head>
<title><?php h($title) ?></title>
</head>
<body>
<h1>Überschrift</h1>
<p>Hier kommen die Daten:</p>
<?php foreach ($values as $value): ?>
<p><?php h($value) ?></p>
<?php endforeach ?>
</body>
</html>
ausgabe_helfer.php
------------------
<?php
// einige kleine Helferfunktionen für die Ausgabe (für das Beispiel nur eine)
function h($string) {
echo htmlspecialchars($string);
}
echo "$verabschiedung $name";