Was ist der Vorteil der Verwendung von Heredoc in PHP und können Sie ein Beispiel zeigen?
Was ist der Vorteil der Verwendung von Heredoc in PHP und können Sie ein Beispiel zeigen?
Antworten:
Die Heredoc-Syntax ist für mich viel sauberer und sehr nützlich für mehrzeilige Zeichenfolgen und zur Vermeidung von Zitierproblemen. Früher habe ich sie verwendet, um SQL-Abfragen zu erstellen:
$sql = <<<SQL
select *
from $tablename
where id in [$order_ids_list]
and product_name = "widgets"
SQL;
Für mich ist die Wahrscheinlichkeit, dass ein Syntaxfehler auftritt, geringer als bei der Verwendung von Anführungszeichen:
$sql = "
select *
from $tablename
where id in [$order_ids_list]
and product_name = \"widgets\"
";
Ein weiterer Punkt ist, dass Sie vermeiden, doppelte Anführungszeichen in Ihrer Zeichenfolge zu vermeiden:
$x = "The point of the \"argument" was to illustrate the use of here documents";
Das pProblem mit dem oben genannten ist der Syntaxfehler (das fehlende maskierte Anführungszeichen), den ich gerade eingeführt habe, im Gegensatz zur hier beschriebenen Dokumentensyntax:
$x = <<<EOF
The point of the "argument" was to illustrate the use of here documents
EOF;
Es ist ein bisschen Stil, aber ich verwende Folgendes als Regeln für einfache, doppelte und hier Dokumente zum Definieren von Zeichenfolgen:
'no variables here'
"Today is ${user}'s birthday"
--ansi
kompatiblen Modus ausgeführt wird. SQL-Zeichenfolgen müssen einfache Anführungszeichen verwenden.
SELECT * FROM "order" WHERE "table"='1'
Heredocs sind aufgrund ihrer verbesserten Lesbarkeit und Wartbarkeit eine großartige Alternative zu zitierten Zeichenfolgen. Sie müssen sich keinen Anführungszeichen entziehen, und (gute) IDEs oder Texteditoren verwenden die richtige Syntaxhervorhebung.
Ein sehr häufiges Beispiel: HTML aus PHP wiedergeben:
$html = <<<HTML
<div class='something'>
<ul class='mylist'>
<li>$something</li>
<li>$whatever</li>
<li>$testing123</li>
</ul>
</div>
HTML;
// Sometime later
echo $html;
Es ist leicht zu lesen und leicht zu pflegen.
Die Alternative besteht darin, Zeichenfolgen in Anführungszeichen zu wiederholen, die maskierte Anführungszeichen enthalten, und IDEs werden die Syntax für diese Sprache nicht hervorheben, was zu einer schlechten Lesbarkeit und größeren Wartungsschwierigkeiten führt.
Aktualisierte Antwort für Ihren gesunden Menschenverstand
Natürlich möchten Sie nicht, dass eine SQL-Abfrage als HTML hervorgehoben wird. Um andere Sprachen zu verwenden, ändern Sie einfach die Sprache in der Syntax:
$sql = <<<SQL
SELECT * FROM table
SQL;
Einige IDEs markieren den Code in Heredoc-Zeichenfolgen automatisch - was die Verwendung von Heredoc für XML oder HTML optisch ansprechend macht.
Ich persönlich mag es für längere Teile von zB XML, da ich mich nicht um Anführungszeichen kümmern muss und das XML einfach einfügen kann.
Zuallererst sind alle Gründe subjektiv. Es ist eher eine Geschmackssache als ein Grund.
Persönlich finde ich heredoc ziemlich nutzlos und benutze es gelegentlich, meistens, wenn ich HTML in eine Variable einfügen muss und mich nicht mit Ausgabepufferung beschäftigen möchte, um beispielsweise eine HTML-E-Mail-Nachricht zu erstellen.
Die Formatierung entspricht nicht den allgemeinen Einrückungsregeln, aber ich denke nicht, dass es eine große Sache ist.
//some code at it's proper level
$this->body = <<<HERE
heredoc text sticks to the left border
but it seems OK to me.
HERE;
$this->title = "Feedback";
//and so on
Die Beispiele in der akzeptierten Antwort sind lediglich Betrug.
String-Beispiele sind in der Tat prägnanter, wenn man sie nicht betrügt
$sql = "SELECT * FROM $tablename
WHERE id in [$order_ids_list]
AND product_name = 'widgets'";
$x = 'The point of the "argument" was to illustrate the use of here documents';
Ich weiß nicht, ob ich sagen würde, Heredoc ist Faulheit. Man kann sagen, dass alles Faulheit ist, da es immer umständlichere Wege gibt, etwas zu tun.
In bestimmten Situationen möchten Sie beispielsweise möglicherweise Text mit eingebetteten Variablen ausgeben, ohne aus einer Datei abrufen und eine Vorlagenersetzung ausführen zu müssen. Mit Heredoc müssen Sie auf Anführungszeichen verzichten, sodass der angezeigte Text der von Ihnen ausgegebene Text ist. Natürlich gibt es einige Nachteile, zum Beispiel, dass Sie Ihren Heredoc nicht einrücken können, und das kann in bestimmten Situationen frustrierend sein, insbesondere wenn Sie ein Verfechter der einheitlichen Syntax sind, was ich bin.