Kleinster PHP Template Parser mit Heredoc Syntax der Welt

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

Juli 5, 2023 - Lesezeit: 4 Minuten
  • Der Post
  • Das HTML-Template
  • Der PHP Template Parser (Heredoc Syntax)
  • Fazit
  • Weiterführende Links
  • 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

    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>

    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("\n", 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  ?>

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

    • Zeile 003 - Die Beitragsdatei kann über die Variable $md angesprochen werden.
    • Zeile 011 - Die Templatedate wird über die Variable $template angesprochen.
    • Zeile 024 - Trennt den Beitrag anhand des --- in einen oberen und unteren Beitragsteil auf und weist das Ergebnis dem Array $upper_and_lower_section zu. Der Slot [0] enthält den oberen und Slot [1] den unteren Teil.
    • Zeile 025 - Trennt die einzelnen Einträge im Metabereich anhand RETURN in ein Array auf. Der Slot [0] enthält den Titel, Slot [1] die Beschreibung und Slot [2] das Datum.
    • Zeile 027 - fügt beide Arrays (oben und unten) zusammen
    • Zeile 028 - ein Array mit Template-Tokens wird aufgebaut, welches die Ersetzungen aufnimmt
    • Zeile 035 - ersetzt das Template-Array (Tokens) mit dem dem Inhalts-Array
    • Zeile 036 - gibt das HTML-Formular mit den ersetzten Tokens am Browser aus.

    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.

    Weiterführende Links

    Schlagworte:

    Beiträge in der Kategorie "PHP":

    Wie können Sie Programm Kommentare in json Dateien und Files vornehmen? Gibt es einen Kommentar-Token oder einen anderen Trick um in json zu kommentieren?

    Sie können mit PHP ein Verzeichnis mit Ordnern und Dateien einlesen und anzeigen. Der Beitrag zeigt ein kurzes Codesegment mit dem opendir() Befehl aus PHP.

    Mit diesem Beitrag erstellen Sie (oder als Download) eine unabhängige Affiliate Datenbank, die Sie in jedem CMS, jeder Webseite oder jedem Blog nutzen können.

    Die Formularverarbeitung durch PHP ist der beliebteste Standard im Web. Nutzen Sie ein intelligentes Design, können Sie sich viel Arbeit und Stress ersparen.

    Möchten Sie einen Log-Mechanismus entwickeln den Sie leicht in jedes PICO Template einbinden können, dann ist JavaScript und PHP ideal dafür.

    Das Auflösen mehrdimensionaler Arrays ist in PHP sehr sperrig, daher in diesem Beitrag ein einfaches diskretes Design-Pattern, für die Auflösung von Arrays

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

    Mit diesem kleinen Script realisieren Sie einen Mailversandt mit Standard PHP und einer Sperrliste die den Versand abbricht wenn Sperrworte enthalten sind.

    In diesem Beitrag können Sie eine kleine FlatFile Projekt Datenbank herunterladen. Eine Beispielimplementierung in Anlehnung an die FlatFileDB von H.Wiledal

    Sie möchten einen alten Artikel aus dem Google-Index entfernen dann sollten Sie vorher diesen Beitrag lesen

    Dieser Beitrag zeigt einen Heredoc Template Parser und mini CMS, erstellt in PHP, unter Nutzung der Heredoc-Syntax. Content, Template und Parser in einer Datei.

    Mit diesem PHP Script lesen Sie eine Mail in Ihrem Postfach, werten den Inhalt mittels PHP aus und löschen im Anschluss die Mail aus dem Posteingang mit PHP.

    Möchten Sie große Mengen Content verwalten und systematisch organisieren oder entwickeln ein eigenes Flatfile CMS, dann hilft die Flatfile DB von Hugo Wiledal

    Das ist die kleinste PHP Template-Engine, bzw. das kleinste PHP-CMS der Welt, erstellt mit der Programmiersprache PHP und 7 Zeilen Code.

    Beiträge mit PHP-Mail an die Seite senden und veröffentlichen

    Kategorien

    Automad

    Das kostenlose Flat File CMS Automad bietet bereits nach der Installation auf dem Server das beste Layout unter allen CMS am Markt.

    Bludit

    Das kostenlose Flatfile CMS Bludit ist das beliebteste Content Management System, das dem großen WordPress sehr nahe kommt, jedoch deutlich mehr Sicherheit bietet.

    CMS

    In dieser Rubrik geht es um übergreifenden Themen aus dem Bereich der Content Management Systeme.

    Coast

    Coast ist ein CMS aus deutscher Feder und ist mit einem exzellenten HTML/PHP Frontend-Editor zu vergleichen, die Daten werden direkt in der HTML-Datei gespeichert.

    GetSimple

    Das kostenlose Content Management System GetSimple verspricht genau das, was der Name andeutet, ein stabiles Flat File CMS auf der Basis von XML-Dateien.

    GRAV

    Das kostenlose Content Management System GRAV gehört zu den komplexesten CMS, da es den größten Funktionsumfang mitbringt.

    Handlebars.JS

    Handlebars.js ist eine kostenlose JavaScript Template-Engine mit der einfache Webseiten oder Prototypen leicht und schnell erzeugt werden können.

    htaccess

    Die .htaccess ist die wohl wichtigste und mächtigste Datei, über die der Server seinen Umgang mit den Daten und Besuchern steuert.

    Java

    Java ist die strategische Programmiersprache für verteilte Anwendungen im Internet oder auch in der Client-Server Architektur und sogar auf dem Host.

    Monstra

    Das CMS Monstra ist ein überaus gelungenes und sauber entwickeltes CMS mit Admin-Backend und Flat File Datenbank.

    PHP

    PHP ist die strategische Programmiersprache des Internets, mit PHP geht alles und ohne PHP nichts! Allerdings ist PHP nicht auf lokalen Client-Umgebungen verbreitet (aber möglich).

    Pico

    Das CMS Pico ist derzeit das ausgereifteste und einfachste headless CMS für den Einsatz großer Mengen an MarkDown-Files (Content).

    Smarty

    Smarty ist eine Template-Engine auf Basis der Programmiersprache PHP und ist in der Lage HTML-Vorlagen (Templates) dynamisch mit Content zu versorgen.

    Typemill

    Typemill ist zunächst ein ganz normales Flat File CMS, entfaltet jedoch sein wahres Potenzial mit einigen besonderen Plugins, die es zum kraftvollen Publishing-Tool macht.

    WonderCMS

    WonderCMS ist das mit Abstand kleinste CMS das es derzeit kostenlos gibt. WonderCMS kommt mit einem PHP-Script und einer JSON-Datenbank aus und bietet ein Backend.

    WordPress

    Das datenbankbasierte Content Management System WordPress ist das beliebteste CMS und hält die meisten Installationen - ist allerdings auch das am meisten attackierte System.

    Derzeit sind noch keine passenden Beiträge vorhanden.