Heredoc -Syntax und dessen richtige Anwendung
Sie befinden sich: Home > Php
> Heredoc Syntax
Wenn in PHP die Anforderung gestellt wird innerhalb eines Charakter – Strings Variablen,
Sonderzeichen oder doppeltes Anführungszeichen zu verwenden, wird die Eingabe durch die
Syntax-Konventionen erheblich erschwert. Wenn z. B. ein doppeltes Anführungszeichen
ausgegeben werden soll, muss es umständlich durch den Escape Charakter \ erweitert
werden. Um dies zu vereinfachen, wurde der sogenannte Heredoc – Syntax eingeführt.
Diese Vereinfachung erlaubt es, einem String einen kompletten Text so an eine Variable zu
übergeben, dass die sonst übliche Verwendung von Escapezeichen als syntaktische
Elemente entfallen können.
Die Anwendung birgt allerdings ein paar Fehlerquellen, die unbedingt beachtet werden müssen.
Das nachfolgende Beispiel zeigt die Anwendung und die damit verbundenen Vereinfachungen.
<?php
$variable_eins = '<b>Inhalt der Variable</b>';
$mein_text = <<< EOT
Das hier ist ein kleiner PHP Text.
Es steht dem Anwender vollkommen frei "doppelte
Anführungszeichen" oder 'einfache'
zu setzen,
Auch $variable_eins wird innerhalb
dieses Textes korrekt mit dem entsprechenden
Inhalt angezeigt, auch hier sind keine Anführungszeichen
nötig. Selbst EOT kann geschrieben werden, solange
es nicht alleine als erster Ausdruck in einer
Zeile steht, wie das folgende
EOT;
echo $mein_text;
?>
Der Ausdruck EOT (End Of Text) ist in diesem Beispiel willkürlich gewählt, es kann
jeder beliebige Ausdruck verwendet werden, vorausgesetzt er ist in der Einleitung mit
„<<<“ definiert worden, und ist kein in PHP selbst definierter
Funktionsname wie array() oder Ähnliches.
Näheres regeln hier die allgemeinen Richtlinien für die Namensgebung unter PHP.
Der eindeutige Bezeichner im Heredoc Syntax ist ein Wort oder eine Zeichenkette, die an das
Schluss-Tag-Zeichen gebunden ist. Der Bezeichner muss eindeutig sein, damit der Compiler weiß,
wo der Heredoc Syntax endet.
Eine Konvention besteht darin, dass der beendende Ausdruck allein in einer neuen Zeile
stehen, und von einem Semikolon abgeschlossen sein muss, sowie dass er nicht mit einem
Leerzeichen beginnen darf. Das abschließende Zeichen darf jedoch innerhalb des Textes
angewendet werden, wie auch im oben angeführten Beispiel zu sehen ist. Zeilenumbrüche
werden ebenfalls so abgebildet oder geparst, wie sie im Heredoc – Block eingegeben
wurden.
Quelltext vom Beispiel
Heredoc – Syntax findet relativ selten Anwendung bei professionell programmierten
Scripten, obwohl es die Lesbarkeit gerade von gemischten Strings (Variablen und
allgemeiner Text) erheblich steigert. Ebenfalls wird die Eingabe des Textes wesentlich
vereinfacht. Dieser Umstand kommt gerade unerfahrenen Programmierern oftmals zugute. Heredoc
– Code ist erstmals ab PHP-Version 4.0 verfügbar.
Ein Beispiel für die Verwendung von Heredoc Syntax mit Kommentaren wäre
Folgendes:
<?php
$string = <<<COMMENT
Dies ist ein Beispiel für Heredoc Syntax mit Kommentaren.
// Hier können Kommentare hinzugefügt werden,
// ohne dass sie im Endergebnis ausgegeben werden.
Dies ist ein weiterer Kommentar.
COMMENT;
echo $string;
?>
Das obige Beispiel würde Folgendes ausgeben:
Dies ist ein Beispiel für Heredoc Syntax mit Kommentaren.
Dies ist ein weiterer Kommentar.
Was ist der Unterschied zwischen dem Heredoc Syntax und dem Nowdoc Syntax in
PHP?
Der Hauptunterschied zwischen dem Heredoc Syntax und dem Nowdoc Syntax besteht darin, dass
der Heredoc Syntax Variablen interpretiert und expandiert, während der Nowdoc Syntax
die Variable als Literal behandelt. Außerdem muss der Nowdoc Syntax ein einzigartiges
Bezeichnungswort als Marker haben, aber kein Semikolon am Ende des Blocks.
Nowdoc Syntax ist ein Weg, um in PHP einen String zu schreiben, der mehrere Zeilen umfasst,
ohne dass Variablen oder andere Daten interpretiert werden. Es ähnelt dem
Heredoc-Syntax, aber die Anführungszeichen sind einfache Anführungszeichen (')
statt doppelt (") und es gibt keine Interpretation.
Hier ist ein Beispiel für Nowdoc Syntax:
<?php
$nowdocString = <<<'EOT'
Dies ist mein Nowdoc-String.
Es kann über mehrere Zeilen gehen.
Variablen werden nicht interpretiert: $variable
EOT;
?>
Erklärung:
Dieser Code definiert einen sogenannten Nowdoc-String. Es handelt sich dabei um einen
speziellen Typ von String Literal, der in PHP verwendet wird. Der Nowdoc-String kann über
mehrere Zeilen gehen und Variablen werden nicht interpretiert. Dies bedeutet, dass Variablen
innerhalb des Strings nicht auf ihren Wert aufgelöst werden, sondern einfach als Text
ausgegeben werden.
weiter include in Php
|