Facebook
Twitter
Google+
Kommentare
8

Heredoc und Nowdoc

Heute war es wieder soweit: Ich wollte diesen praktischen String-Operator verwenden. Aber ich kam – mal wieder – nicht auf den Namen. Damit dies nicht wieder vorkommt, wird er nun hier festgehalten. Gemeint ist der Heredoc-Operator. Dessen Wurzeln li

egen in der *nix-Shell-Programmierung. Somit ist auch klar, warum er mir als Windows-Nutzer weniger geläufig ist.

Zur Anwendung: Möchte man einen String deklarieren, so gibt es im Wesentlichen zwei Möglichkeiten: Doppelte und einfache Anführungszeichen. Kommen die gleichen Anführungszeichen im String selbst vor, so müssen sie mit einem Backslash maskiert werden. Dies kann bei größeren Mengen Text lästig sein. Mit der Heredoc-Syntax http://www.phpaide.com/?langue=fr&id=17 kann auf die Anführungszeichen verzichtet werden:

$name = "Betty";
$text = <<<EOL
Hier kommt jede Menge Text. Z.B. Mein Name ist $name.
EOL;

Der String wird eingeleitet mit dem Heredoc-Operator <<<, gefolgt von einem beliebigen Identifier (beliebig, sofern die üblichen Namenskonventionen eingehalten werden). Der eigentliche Text darf erst in der nächsten Zeile auftauchen.
Wichtig ist auch, dass der schließende Identifier mit dem öffnenden identisch ist. Er muss am Anfang der Zeile stehen (also auch ohne Einrückung davor) und wird gefolgt von einem Semikolon.

Abgesehen von dieser speziellen Syntax verhält sich ein mit Heredoc deklarierter String genauso wie ein String in doppelten Anführungszeichen, d.h. Variablen werden geparst usw.

Das Gegenstück (also: Heredoc mit einfachen Anführungszeichen) wird es erst ab PHP 5.3 geben und nennt sich Nowdoc. Die Nowdoc-Syntax entspricht der von Heredoc mit dem kleinen Unterschied, dass der einleitende Identifier in einfachen Anführungszeichen notiert wird. Nowdoc ist z.B. dann ganz praktisch, wenn der String Programm-Code darstellt, der gerade nicht geparst werden soll:

$nowdoc = <<<"EOL"
$name = "Betty";
print $name;
EOL;

Übrigens: In der deutschen Wikipedia gibt es zur Zeit keinen Eintrag zu Heredoc. Wer mehr erfahren und die leicht unterschiedliche Syntax je nach Sprache oder Shell vergleichen möchte, sei auf den englischsprachigen Artikel verwiesen.

PHP-Handbuch: http://de.php.net/manual/de/language.types.string.php
Wikipedia: http://en.wikipedia.org/wiki/Heredoc

zp8497586rq
Über den Autor

Frank Giesselmann-Wilms

„Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen