201108Sep

HamlPHP: Haml-Templates in PHP verwenden

Wer schon einmal mit Ruby oder Rails gearbeitet hat, wird das Template-System "ERB" kennen. Durch die Metasprache wird es ermöglicht, Ruby-Quelltext in HTML-Templates zu implementieren und auszuwerten. Noch kürzer geht das Ganze mit Haml (HTML Abstraction Markup Language), einer vereinfachten Auszeichnungssprache, die in erster Linie als Ruby-Gem zur Verfügung steht. Mit Haml können HTML-Templates noch kompakter geschrieben und dennoch mit dynamischen Bereichen ausgestattet werden. Ein Merkmal der Sprache ist die Auswertung von Einrückungen (Leerzeichen), die Auswirkungen auf die semantische Struktur des Dokuments haben.
Mittlerweile stehen auch für PHP Implementierungen der Haml-Syntax zur Verfügung und einen Vertreter davon stellt HamlPHP dar.

Haml - HTML Abstraction Markup Language

Das Projekt besteht aus verschiedenen Klassen und erzeugt nach dem Parsen eines Haml-Templates eine temporäre PHP-Datei, die schließlich interpretiert und im Browser ausgegeben wird. Der HamlPHP-Parser kann nach der Einbindung von entsprechenden Klassen wie folgt verwendet werden:

  • <?php
  • $content = $parser->parseFile("template.haml");

Ein Haml-Template könnte dann so aussehen:

  • !!! 5
  •   %html
  •   %head
  •   %body
  •     #container
  •       %h1{"id" => "header"} Headline
  •     %a{href => "http://haml.info/"} Haml-Website

Die finale Ausgabe:

  • <!DOCTYPE html>
  • <html>
  • <head></head>
  • <body>
  • <div id="container">
  • <h1 id="header">Headline</h1>
  • </div>
  • <a href="http://haml.info/">Haml-Website</a>
  • </body>
  • </html>

Es können also beliebige Attribute gesetzt werden und zudem können über bestimmte Maskierungen auch CSS-, JavaScript- oder PHP-Bereiche integriert werden. PHP-Auswertungen können auch über eine spezielle Syntax direkt ausgeführt werden, die in HamlPHP als "Interpolation" bezeichnet werden.
In dem Paket sind zudem etliche Beispiele enthalten und wer Haml direkt ausprobieren möchte, kann dazu den Bereich auf der offiziellen Website nutzen.

RSS-Feed abonnieren Bookmark bei Del.icio.us Bookmark bei Mister Wong