Kleinster PHP Template Parser mit Heredoc Syntax der Welt

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

CMS Workbench Bludit Pico WordPress Smarty Twig Automad PHP
WordPress 5 Das Praxisbuch

WordPress 5 Das Praxisbuch - WordPress ist weltweit das beliebteste CMS-Tool. Dieses Buch führt Sie in die Welt der Blogs ein, ohne Programmierkenntnisse vorauszusetzen. Verschiedene Arten von Blogs, passende Themes sowie hilfreiche Plugins werden vorgestellt, das Erstellen von Beiträgen und der Umgang mit Bildern beschrieben. Sie erfahren wichtige Details zu Kommentaren, Newslettern, Abonnenten sowie zum Administrationsbereich. Wertvolle Tipps zur Suchmaschinenoptimierung runden das Werk ab. Der Titel ist für Anfänger und Fortgeschrittene zum Lernen und Nachschlagen geeignet. Ein Buch aus der Praxis für die Praxis. (*

kaufen...
Inhaltsverzeichnis
  •   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


PHP Template Parser Engine EOD Heredoc EOF
22.03.2022
Oliver Lohse

Es wurden noch keine Kommentare verfasst, sei der erste!

Weitere passende Artikel

_____

Zufällige Affiliate-Links auch ohne externe Plugins mit Hilfe von YAML und der Templatesprache Twig in Pico CMS realisieren, das ist sogar wirklich sehr einfach.
Erstellen Sie im CMS Automad eigene Templates, dann sollten Sie einen Blick auf diese Ordner werfen, denn sie sind maßgeblich für das Template wichtig.
So können Sie das freie Feld TEMPLATE in den Beitragseinstellungen verwenden. Fragen Sie es mit dem folgenden Coding des Beitrags ab und steuern das Templating
Möchten Sie den Backend-Editor des Autors oder Admin individuell anpassen? Dann finden Sie hier den richtigen Pfad zur Programm-Source edit-content.php.
So steuern Sie die Templatevorgabe in Beiträgen mit dem CMS Bludit. Sie können den Tamplatenamen bei der Erstellung von Beiträgen im Backend angeben.
Brandings der Entwickler sind natürlich eine gute Sache, jedoch dürfen sie auch abgestellt werden. Wie das für das Bludit Theme DEVTHEME geht, lesen Sie hier
Im Bludit Theme DEVTHEME wird das Label "latest Post" angezeigt. Manchmal kann das störend sein. Entfernen Sie das Label doch einfach in der home.php
So aktivieren Sie den integrierten und deutlich einfacheren Markdown-Parser des Bludit CMS und schalten die visuellen Editoren TinyMCE und EasyMDE ab.
Mit diesem Coding können Sie verschiedene Templates starten, jenachdem ob der Leser eine Seite, Kategorie, home oder Tag wählt. Bludit kennt vier Seiten-Typen
Wenn Sie Bludit-Themes und Templates entwickeln dann können Sie dem Leser die Möglichket geben das Theme live umzuschalten für den ersten Eindruck.
Das Bludit Theme TYPERITE ist vielversprechend, da es ein Optimum an Customizing ermöglicht. Entfernen Sie das Branding aus dem Footer - das ist erlaubt.

Dipper fast YAML Parser - YAML Files lesen und schreiben - yaml Flat File CMS full YAML driven headless Flat File CMS

YAML • YML • Dipper • PHP • lesen • schreiben • Git • GitHub • static
Dipper ist der kleinste YAML-Parser mit dem YAML Dateien gelesen und geschrieben werden können. Ein PHP-Beispiel zum lesen und schreiben von YAML mit Dipper.

Download - Plugins -

Download • kostenlos • Plugin • Template • Theme
Kostenlose Plugins und Templates für Bludit, Pico CMS, WonderCMS, GetSimple, WordPress und co, zum kostenlosen Download
Legen Sie ein Array in der Sprachdatei de_DE.json des Templates an und greifen aus dem Template auf einzelne Key Value Paare zu um Affiliate Links zu erzeugen
Teil 1 - Der Einstieg in das Templating mit dem freien CMS GetSimple - der Name ist Programm, denn dieses CMS ist klar und leicht beherrschbar strukturiert.
Teil 3 - Ein GetSimple Template erstellen. In Verbindung mit dem freien und beliebten CSS-Framework Bootstrap eine leichte Sache auf dem Weg zum eigenen Blog.
Dieser Beitrag zeigt ein einfaches Demo Template für die JavaScript basierte Template Engine Handlebars. Dieses Template ist sogar offline funktionsfähig.
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.
Das ist die kleinste PHP Template-Engine, bzw. das kleinste PHP-CMS der Welt, erstellt mit der Programmiersprache PHP und 7 Zeilen Code.
Greifen Sie mit der Methode User() auf Attribute des angemeldeten und registrierten Benutzers zu und zeigen Namen, Avatare oder Kontaktdaten unter Beiträgen an
Erarbeiten Sie als Prototypen ein reines HTML-Template das Ihnen zusagt. HTML-Templates sind schneller entwickelt und müssen weniger Restriktionen einhalten.
Die Formularverarbeitung durch PHP ist der beliebteste Standard im Web. Nutzen Sie ein intelligentes Design, können Sie sich viel Arbeit und Stress ersparen.
Mit der Markdown Syntax können Sie auch einen klickbaren Bildlink im Text eintragen. Es ist eine Schachtelung verschiedener bekannter Markdown Format-Befehle.
Möchten Sie in Smarty Templates Bedingungen abfragen, dann können Sie den IF Befehl des Smarty Parsers nutzen, um die Ausgabe des Templates zu steuern.
In welcher Schreibweise sollten Sie CMS Templates erstellen? Gemischt HTML und PHP oder doch lieber waschechtes PHP? Dieser Beitrag erleichtert den Einstieg.
Werden Sie zum Template-Entwickler und beginnen mit leichten Arbeiten, portieren Sie Ihre Templates später in die großen CMS wie WordPress, Bludit oder Joomla
yamlCMS ist mein Beitrag und meine eigene Vorstellung an eine sichere Webseite auf Basis eines Flat File CMS mit lesbarer Datenbankstruktur ohne 'Firlefanz'.
Mit diesem Trick legen Sie neue Datenbank-Felder in der JSON-Datenbank des WonderCMS vollkommen automatisiert an - mit nur einer Codezeile im WonderCMS Theme.
Das WordPress Plugin steht im Verdacht Malware zu enthalten. In unterschiedlichen Foren im Netzt sind dazu widersprüchliche Infos zu finden - es ist abzuwarten
WordPress Easy - Redaktion

About me

Mein Name ist Oliver Lohse. Ich bin diplomierter Wirtschafts-Informatiker und Organisations-Programmierer in verschiedenen Programmier-Sprachen und Markup-Dialekten, z.B. Java, JEE, COBOL, PHP, Python, MySQL, HTML, CSS, ANSI C, Lisp, Rexx, JavaScript, Scheme, ActionScript 2.0, Maschinensprache, Assembler und JCL. Seit mehr als 24 Jahren arbeite ich als Entwickler in einem großen Softwareunternehmen für Versicherungen in Hannover Niedersachsen und seit etwa 37 Jahren im EDV-Sektor mit wechselnden Aufgaben.