2010-09-13 34 views
35

Zum Beispiel:Was bedeutet in PHP "<<<"?

$sql = <<<MySQL_QUERY 
+0

Sie können die PHP-Dokumentation auf der [Heredoc] (http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc) -Syntax für eine lesen besseres Verstehen. –

+0

Wenn Sie andere Symbole erläutert benötigen, [dies ist eine gute Referenz] (http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Wrikken

+0

http: // stackoverflow.com/questions/5673269/what-is-the- Advantage-of-using-heredoc-in-php – zloctb

Antwort

33

Das ist Heredoc-Syntax. Sie starten eine Heredoc-Zeichenkette, indem Sie <<< plus ein Token Ihrer Wahl setzen und es beenden, indem Sie nur das Token (und nichts anderes!) In eine neue Zeile setzen. Aus praktischen Gründen gibt es eine Ausnahme: Sie können ein einzelnes Semikolon nach dem Endtrennzeichen hinzufügen.

Beispiel:

echo <<<HEREDOC 
This is a heredoc string. 

Newlines and everything else is preserved. 
HEREDOC; 
+2

Was ist der Unterschied zwischen dieser und einer normalen Zeichenkette? Warum nicht einfach "echo" Dies ist ein heredoc ..... "' – CodyBugstein

+0

@Imray so weit ich mich erinnern kann, können Sie Einzel- und doppelte Anführungszeichen in das Heredoc sowie Variablen und alles wird funktionieren. Wenn Sie in Ihrer 'echo' -Anweisung doppelte Anführungszeichen verwenden möchten, müssen Sie sie ausschließen. Dennoch habe ich kurz nachdem ich angefangen habe mit dem Einsatz von here- doc aufgehört, weil ich meine Eindrucksmuster dafür nicht brechen wollte. Jetzt formiere ich viele meiner Strings als Arrays, die ich später implode ("\ n", $ string_array) '. –

+0

Ich würde argumentieren, dass es sehr nützlich ist, wenn Sie verschiedene Sprachen injizieren möchten. Die Möglichkeit, Zeilenumbrüche ohne Verkettung zu verwenden (was Code-Vervollständigung usw. stören könnte), ist wirklich nett. – SourceOverflow

16

Es ist der Beginn einer Zeichenfolge, die die HEREDOC syntax.

Eine dritte Möglichkeit Strings zu begrenzen verwendet, ist die heredoc Syntax: < < <.

Nach diesem Operator wird ein Bezeichner bereitgestellt, dann ein Zeilenumbruch. Die Zeichenfolge selbst folgt und dann die gleiche Kennung erneut, um das Zitat zu schließen.

+0

Cool, ich wusste nicht, dass man ... Ich las den Link, den Sie gesendet haben und ehrlich, ich verstehe warum Ich könnte bis jetzt ohne das leben! ;) Was wäre der Vorteil, das für eine Zeichenkette zu verwenden? – Gabriel

+7

@Gabriel ermöglicht es Ihnen, beide Arten von Zitaten innerhalb der Zeichenfolge zu verwenden, ohne es zu brechen: '<<< END Hallo" $ name "! Wie ist '$ Gatte' heute?END' Ein großer Schmerz im Arsch ist jedoch, dass der Marker 'END' nicht eingerückt werden darf, so dass der Inhalt des Codes normalerweise den Einzug des Codes unterbricht. Es ist in der Tat nicht wirklich eines der wichtigsten Features von PHP :) –

+0

@YiJiang das war eigentlich wegen der deutschen Lokalisierung! Damn geolocation, gibt mir immer den falschen Link, obwohl Englisch meine Browsersprache ist. Korrigiert, Prost :) –

7

Es ist PHP heredoc.

Beispiel:

$sql = <<<MySQL_QUERY 
SELECT * 
FROM TAB 
WHERE A = 1 AND B = 2 
MySQL_QUERY;   
5

Es ist die heredoc syntax.

$str = <<<EOD 
Example of string 
spanning multiple lines 
using heredoc syntax. 
EOD; 
10

Dies ist ein heredoc genannt, und es können Sie ein langes Stück Text zu tun, die sich über mehrere Zeilen geht. Sie können PHP-Variablen einfügen und sie durch den Wert ersetzen. Das Wort CHART kann alles sein. Es muss nur gleich sein, um zu beginnen und zu stoppen, wo der zitierte Text beginnt.

Sie können das gleiche tun, indem Sie mehrere Strings in Anführungszeichen anhängen, aber dies ist meistens für erweiterte Dokumente wie diesen HTML-Text sauberer. Es gibt auch eine so genannte nowdoc, die wie eine einfache Anführungszeichenfolge in PHP ist, aber diese wird nicht zulassen, dass Sie Variablen in ihnen verwenden.

+0

Oh okay, danke. Anstatt lange zu suchen, dachte ich, ich würde nur eine kurze Frage stellen – user1464971

5

Es ist eine Heredoc, für lange Zeichenfolgen, die Sie nicht über Anführungszeichen und was nicht kümmern müssen. Wenn Sie das Wort CHART bemerken und dann gibt es eine Zeile, die CHART; angibt, die das Ende der Zeichenfolge angibt.

Bei der Verwendung dieses Formats ist zu beachten, dass unabhängig von der Zeichenfolge, die Sie zum Definieren des Endes der Zeichenfolge verwenden (z. B. CHART), dieses Wort in einer eigenen Zeile erscheinen muss, gefolgt von a Semikolon, und KEINE Zeichen können nach dem Semikolon in der gleichen Zeile vorkommen, auch Leerzeichen, sonst glaubt PHP, dass es Teil der Zeichenkette ist.