Welche Vor- und Nachteile hat Heredoc Notation in Ihrem PHP?

8

Ich habe noch nie so etwas gesehen. Also verwirrte es mich für eine Weile. Aber jetzt verstehe ich es und benutze es manchmal. Kann mir also jemand nach kurzer Erfahrung sagen, was die Vor- und Nachteile der Heredoc Notation in Ihrem PHP sind?

%Vor%

Persönlich, wie benutzt du diese PHP-Funktion? Ist es eine schlechte Art des Codierens oder guten Weges?

    
justjoe 21.03.2010, 13:39
quelle

8 Antworten

7

99% der Zeit verwende ich es, es ist für SQL-Abfragen zB:

%Vor%

Ich finde es einfacher, solche Abfragen im Quellcode zu finden und sie in etwas zu kopieren und einzufügen, um sie auszuführen. Ihre Laufleistung kann variieren. Hinweis: Sie können mehrere Zeilen mit normalen Strings erstellen. Ich tendiere dazu, dies jedoch zu vermeiden, da die erste Zeile anders eingerückt ist als der Rest.

Der größte "Profi" ist meiner Meinung nach, dass Sie keine Zitate umgehen müssen. Das ist besonders ein Problem mit Markup. Entscheide selbst, was leichter zu lesen ist. Angenommen:

%Vor%

Version 1: einfache Anführungszeichen

%Vor%

Version 2: doppelte Anführungszeichen

%Vor%

Version 3: heredoc

%Vor%

Hinweis: In Version 2 können Sie natürlich einfache Anführungszeichen für Attributwerte verwenden, um das Problem zu lösen, aber der Punkt ist, dass Sie sich um solche Dinge sorgen müssen. Persönlich mag ich es nicht, Attribut-Anführungszeichen-Typen in Markup zu mischen.

    
cletus 21.03.2010, 14:01
quelle
7

Es gibt jetzt zwei Arten von "Heredoc:"

  • Heredoc , ähnlich den Anführungszeichen "" konvertiert alle Variablen in ihren Wert bei der Erstellung. Dies ist sehr nützlich, um genaue Abstände / Rückgaben dort zu platzieren, wo Sie sie benötigen (keine Notwendigkeit für \ n oder \ t).
  • Nowdoc , ähnlich wie einzelne Marken '' wird NOT konvertiert alle Variablen und speichert nur den Textwert. Dies kann in Standardwerten von Klassenvariablen verwendet werden (im Gegensatz zu heredoc).

Heredoc Beispiel:

%Vor%

Nowdoc Beispiel:

%Vor%

EDIT: Der einzige Nachteil, den ich mir vorstellen kann, ist, dass den Endzeichen (in den Beispielen, EOL) MUSS 0 Leerzeichen vorangestellt werden müssen. Das ist schwer zu merken und sieht in verschachtelten Funktionen hässlich aus:

%Vor%     
St. John Johnson 21.03.2010 13:47
quelle
4

Nun, die Pro (s) ist

  • es ist praktisch für große Textabschnitte mit Anführungszeichen

und die Nachteile

  • Sie brauchen selten große Textabschnitte in MVC
  • unterbricht die Einrückung
  • hat einige Macken, wenn es mit Klassen verwendet wird (vor 5.3)

Persönlich benutze ich es nicht.

(ein obligatorischer Disclaimer über all dies ist eine Frage der Präferenz, etc etc)

    
user187291 21.03.2010 13:49
quelle
2

Ich benutze es überhaupt nicht. Es war sehr nützlich in Perl, da Perl keine HTML-Escape-Funktion hatte. Also, PHP tut, und wenn ich eine große Menge an Text ausdrucken möchte, würde ich einfach den PHP-Tag schließen und den Text so eingeben, wie er ist. In jedem anderen Fall stehen mir alte gute doppelte Anführungszeichen gut.

    
Your Common Sense 21.03.2010 13:49
quelle
2

HEREDOCs sind sehr nützlich, um große Textblöcke in eine Variable oder direkt auf den Client zu laden. Sie sparen außerdem mehrere Verkettungen, wenn Sie eine lange mehrzeilige Zeichenfolge erstellen. Der einzige Hauptnachteil besteht darin, dass Sie alle Daten, die Sie einfügen möchten, vorverarbeiten müssen.

%Vor%

ist sehr gut lesbar, besonders mit einem Syntax-Highlighting-Editor. Aber Sie müssen $ bar mit htmlspecialchars () OUTSIDE dort heredoc (für ausgehende Anführungszeichen) vorverarbeiten, so dass Sie enden mit:

%Vor%

Wenn Sie sich im "HTML-Modus" befinden, können Sie Folgendes verwenden:

%Vor%

oder

%Vor%

Im Allgemeinen müssen Sie die maskierte Version der Daten nicht speichern. Sie können sie also auch direkt ausgeben und den Variablenzuweisungsschritt speichern. Mit HEREDOCs können Sie das nicht tun, da Sie keinen Funktionsaufruf direkt in sie einfügen können.

    
Marc B 21.03.2010 22:18
quelle
1

Es ist sehr nützlich, einen sehr sauberen Programmierstil zu haben, der html mit php segregiert. Ihre PHP-Codes werden sehr gut lesbar und leichter zu verstehen sein. Es erleichtert das Debugging von Codes erheblich. Es erlaubt Ihnen, sich mehr auf die Logik des Programms als auf die Präsentation mit HTML zu konzentrieren. Sie brauchen nur eine echo-Anweisung anstelle der lästigen PHP-Skripte überall in Ihrem HTML. Um zu veranschaulichen, wie es verwendet wird, hier ein Beispiel.

masterpage.php

%Vor%

meritBadges.php

%Vor%

Alle anderen Seiten können in ähnlicher Weise mit dem obigen Beispiel erstellt werden. Denken Sie daran, dass Sie nur eine große Zeichenfolge für Ihre Ausgabe erstellen und diese in Ihrer hmtl-Datei mit nur einem Echo anzeigen! Analysieren Sie einfach die obigen Codes und sehen Sie, wie Sie Ihre PHP-Programmierung mit herecoc verbessern können!

    
eagle 19.05.2010 21:41
quelle
1
  

Ist das eine schlechte Art zu schreiben oder gut?

Sie meinen, Ist es eine gute Übung oder eine schlechte Übung?

Im Allgemeinen ist nichts falsch daran, es zu benutzen. Ich würde so weit gehen und sagen, dass etwas mit nicht nicht stimmt:

  1. Sie müssen keine einfachen und doppelten Anführungszeichen verwenden
  2. Ermöglicht das Anhängen an eine vorherige Variable, während ein "Kontext"
  3. definiert wird
  4. Ermöglicht die direkte Verwendung von Nicht-PHP-Markup (z. B. Javascript) neben PHP; macht Nicht-PHP-Code spürbar
  5. Keine merklichen Unterschiede in der Leistung [*]. Trotzdem ist es trivial.

Natürlich ist nichts falsch mit $var = "Welcome, <b>$user</b>;" - Es ist jedoch nicht ideal, wenn Sie mit großen Mengen von Fremdcode arbeiten und die Lesbarkeit beibehalten möchten:

Wirklich, es ist ein idealer Weg, mit Markup wie HTML umzugehen, wenn Sie es nicht direkt ausgeben können.

[*] Basierend auf persönlichen Tests, sollte aber trotzdem wahr bleiben.

    
Super Cat 20.01.2015 23:30
quelle
0

Obwohl HEREDOC akzeptabel ist, ist meiner Meinung nach der größte Nachteil, dass die meisten IDEs die Möglichkeit verlieren, den Code zu verfolgen, und oft Nachrichten anzeigen, bei denen keine abschließenden Tags gefunden werden können - insbesondere wenn ein öffnendes Tag in einem anderen HERDOC liegt Das End-Tag oder der Code ist eine Mischung aus allen Stilen. Eine der Anwendungen, die ich erbte, war überall. Zum Beispiel.

%Vor%

Dies ist ein schlechtes Beispiel, bei dem sich ein Code in einem HEREDOC befindet, wie der Anfang der Tabelle, und dann viel später im Code, wird die Tabelle normalerweise außerhalb von PHP-Tags geschlossen. Meine IDE (phpstorm 2017) beklagt, dass sie keine übereinstimmenden Tabellen-Tags finden kann.

Aus diesem Grund konvertiere ich immer die HEREDOCs, die ich finde, in Single-Quote-Versionen. Ich mag auch nicht zu entkommen, so dass die einfache Anführungszeichen-Methode für mich am saubersten aussieht.

Aber das ist nur meine Meinung ...

    
James Stoddern 11.07.2017 08:43
quelle

Tags und Links