home · Automad · Bludit · ChatGPT · CMS · GetSimple · GRAV · Handlebars · htaccess · Java · Jira · PHP · Pico · Smarty · Typemill · WonderCMS · WordPress · Yellow ·
Kleinster PHP Heredoc Template Parser

Kleinster PHP Heredoc Template Parser

Die kleinste PHP-Template-Engine bzw kleinste PHP-Template-Parser, der mit Heredoc Syntax arbeitet. Die Heredoc Syntax ist ideal für kleine Prototypen.

PHP Heredoc-Syntax

Der Sprachdialekt PHP ist von Hause aus templatefähig, daher gibt es immer wieder Diskussionen im Web über den Sinn und Unsinn von Template-Engines wie Twig oder Smarty. Ungeachtet dessen möchte ich in diesem Beitrag demonstrieren, wie klein und kompakt ein PHP Template Mechanismus mit Heredoc-Syntax sein kann.

Der Post

Der Post unterteilt sich in einen Kopf- und einen Kopf-Bereich. Im Kopfbereich finden sich einige Informationen zu Titel, Beschreibung und Teaser-Grafik.

...  Oliver Lohse
...  Beschreiben Sie hier den Beitrag, das ist der Anleser mit max. 160 Zeichen
...  17-03-2022
...  ~~~
...  Der vollständige Beitragstext, mit unbegrenzter Anzahl an Zeichen, also der eigentliche Artikel

Code

Der Kopf nimmt drei Metainfos auf und ist vom eigentlichen Inhalt mit drei Bindestrichen getrennt bzw. separiert. Diese Trennung wird für den Parser später wichtig, um die Metainfos vom Inhalt unterscheiden zu können. Wenn Sie mehr Metainfos benötigen, dann tragen Sie einfach weitere ein.

Das HTML-Template

Das Templatefile ist für Demonstrationszwecke ebenfalls recht übersichtlich - auf umständliches CSS wird verzichtet, es kommen Standard-HTML Tags zu Einsatz.

...  <html>
...      <title> {title} </title>
...      <body>
...          <h1> {title} </h1>
...          <hr>
...          <p> {description} </p>
...          <p> {content} </p>
...          <small> {date} </small>
...      </body>
...  </html>

Code

Das Template-File nimmt jeweils einen Template-Token für Titel, Beschreibung, Inhalt und Datum auf. In späteren Ausbaustufen können Sie dies durch eigene Tokens leicht ersetzen und ausgiebig mit CSS, z.B. Bootstrap, elegant formatieren.

Der PHP Template Parser (Heredoc Syntax)

Der folgende Code ist die vollständige Zusammenstellung der Beitragsdatei, des Templates und des Parsers in einem übersichtlichen PHP-Script in Heredoc-Syntax.

001  <?php
002  // Beitrag (Heredoc Syntax)
003  $md = <<<EOD
004  Oliver Lohse
005  Beschreiben Sie hier den Beitrag, das ist der Anleser mit max. 160 Zeichen
006  17-3-2022
007  ~~~
008  Der vollständige Beitragstext, mit unbegrenzter Anzahl an Zeichen, also der eigentliche Artikel
009  EOD;
010  // Template (Heredoc Syntax)
011  $template = <<<EOD
012  <html>
013      <title>{title}</title>
014      <body>
015          <h1>{title}</h1>
016          <hr>
017          <p>{description}</p>
018          <p>{content}</p>
019          <small>{date}</small>
020      </body>
021  </html>
022  EOD;
023  // Parser
024  $upper_and_lower_section   = explode('~~~', $md);
025  $header_section = explode("

", trim($upper_and_lower_section[0])); 026
027 $header_section[] = $upper_and_lower_section[1]; 028 $templatetarget = array( 029 '{title}', 030 '{description}', 031 '{date}', 032 '{content}' 033 ); 034
035 $template = str_replace($templatetarget, $header_section, $template); 036 echo $template; 037
038 ?> Code

Zum besseren Verständnis, einige wichtige Codezeilen Erläutert.

Hinweis: Die Reihenfolge der Metainformationen des Beitrags, muss der Reihenfolge des Arrays $templatetarget entsprechen. Der {content} wird immer am Schluss angehägt, was durch Zeile 027 verursacht wird.

Fazit

Zugegeben, der kleine Template-Parser ist nicht sehr praktikabel, da er keine externen Dateien läd, er läd weder eine Beitragsdatei, noch eine Template-Datei. Dennoch kann dies einfach angepasst werden und nicht zuletzt soll der Code ein Beispiel für das Parsing mit PHP-Mitteln sein.

Tipp: Die so genannte Heredoc-Syntax ist ideal dafür geeignet, mal eben schnell einen Prototypen zu erstellen, der später externe Dateien verarbeiten soll, diese aber zu Demonstrationszwecken intern läd. In späteren Ausbaustufen können diese dann extern ausgelagert werden und mittels Dateizugriff gelesen werden.

Hinweis: Die Metainformationen in diesem Beispiel müssen immer eine festgelegte Reihenfolge haben, ändern Sie diese, müssen Sie dies auch im Code anpassen. In solchen Fällen sind andere Formate wie YAML oder JSON besser geeignet, da diese unabhängig von der Reihenfolge der Keys sind.

Dieser Leitartikel besitzt keine untergeordneten Beiträge.

Affiliate

JavaScript Das umfassende Handbuch. JavaScript lernen und verstehen. Inkl. objektorientierter und funktionaler Programmierung - Ein umfassender Einstieg in JavaScript, viele praktische Beispiele und eine Darstellung auch professioneller Techniken – all das zeichnet dieses unverzichtbare Handbuch aus. Es eignet sich sowohl für Anfänger, die JavaScript von Grund auf lernen, als auch für Fortgeschrittene und Profis, die wissen wollen, wie man moderne, dynamische Webanwendungen entwickelt. Hier finden Sie alle wichtigen Techniken: Ajax, jQuery, Node.js, DOM und mehr. Entdecken Sie die neuesten Trends, Techniken und Entwicklungen bis hin zur Steuerung von Microcontrollern.

Hinweis: Die Webseite ist Mitglied im Amazon.Partnernet und kann mit Affiliate-Links den Betrieb stützen. Für Sie als Leser ist das natürlich vollkommen kostenlos.

(c) by CMSWorkbench.de