2010-09-13 21 views
35

Na przykład:W języku PHP, co oznacza "<<<"?

$sql = <<<MySQL_QUERY 
+0

Możesz przeczytać dokumentację PHP na składni [Heredoc] (http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.[oc) dla lepsze zrozumienie. –

+0

Jeśli potrzebujesz innych wyjaśnionych symboli, [to jest dobra informacja] (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

Odpowiedz

33

To jest składnia heredoc. Zaczynasz ciąg heredoc przez wstawienie <<< plus wybranego tokena i kończenie go poprzez umieszczenie tylko tokena (i nic więcej!) W nowym wierszu. Dla wygody istnieje jeden wyjątek: możesz dodać pojedynczy średnik po ograniczniku końcowym.

Przykład:

echo <<<HEREDOC 
This is a heredoc string. 

Newlines and everything else is preserved. 
HEREDOC; 
+2

Jaka jest różnica między tym a zwykłym ciągiem znaków? Dlaczego nie po prostu zrobić "echo" To jest heredoc ..... " – CodyBugstein

+0

@Imray o ile pamiętam, możesz umieścić pojedyncze i podwójne cudzysłowy w heredoc, jak również zmiennych i wszystko będzie działać. Jeśli chcesz użyć podwójnych cudzysłowów w swoim wyrażeniu 'echo', będziesz musiał uciec z nich. Mimo to przestałem używać heredoc wkrótce po tym, jak zacząłem, ponieważ nie lubiłem łamać moich wzorów wcięć. Teraz tworzę wiele ciągów jako tablice, które później 'implode (" \ n ", $ string_array)'. –

+0

Twierdzę, że jest to bardzo przydatne, jeśli chcesz wstrzykiwać różne języki. Możliwość używania nowych linii bez konkatenacji (co może przerwać wykonywanie kodu itp.) Jest naprawdę przyjemna. – SourceOverflow

16

Jest początek napisu, który używa HEREDOC syntax.

trzeci sposób, aby oddzielić ciągi jest składnia heredoc: < < <.

Po tym operatorze jest dostarczany identyfikator, a następnie znak nowej linii. Ciąg następuje, a następnie ponownie ten sam identyfikator, aby zamknąć cytat.

+0

Fajnie, nie wiedziałem, że jeden ... Przeczytałem link, który wysłałeś i szczerze, rozumiem, dlaczego Mógłbym żyć bez tego do tej pory! ;) Jaka byłaby korzyść z używania tego dla ciągu znaków? – Gabriel

+7

@Gabriel pozwala na użycie obu rodzajów cytatów w ciągu znaków bez ich łamania: '<<< END Hello" $ name "! Jak dzisiaj wygląda "współmałżonek"?KONIEC "Jeden wielki ból w dupie polega jednak na tym, że znacznik' END' nie może być wcięty, więc zawartość Heredoc zazwyczaj łamie wcięcie twojego kodu. Naprawdę nie jest to jedna z najważniejszych funkcji PHP :) –

+0

@YiJiang, która faktycznie powstała z powodu niemieckiej lokalizacji! Cholerna geolokalizacja, zawsze podaje mi niewłaściwy link, mimo że angielski jest moim językiem przeglądarki. Poprawione, okrzyki :) –

7

To PHP heredoc.

przykład:

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

To heredoc syntax.

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

To się nazywa heredoc, a to pozwala zrobić długi kawałek tekstu, który jedzie na kilka linii. Możesz umieścić tam zmienne PHP i zastąpią je wartością. Słowo WYKRES może być cokolwiek. Musi być taki sam, aby rozpocząć i zatrzymać, gdy zaczyna się cytowany tekst.

Można zrobić to samo, dodając wiele cytowanych ciągów, ale jest to w większości przypadków czystsze w przypadku dokumentów rozszerzonych, takich jak ten tekst HTML. Jest też coś, co nazywa się nowdoc, co jest jak pojedynczy łańcuch cudzysłowu w PHP, ale to nie pozwoli ci używać zmiennych w nich.

+0

Oh ok, dzięki. zamiast długo szukać, pomyślałem, że po prostu zadaję szybkie pytanie – user1464971

5

To heredoc, dla długich łańcuchów, że nie musisz się martwić o cudzysłowy i cokolwiek. Jeśli zauważysz słowo WYKRES, a następnie pojawi się linia z napisem WYKRES ;, który wskazuje koniec napisu.

Ważne, aby pamiętać, że podczas korzystania z tego formatu jest to, że jakikolwiek łańcuch, którego używasz do zdefiniowania końca ciągu (takiego jak WYKRES w tym przypadku), słowo to musi pojawić się w osobnej linii, a następnie średnik i znaki NO mogą wystąpić po średniku w tej samej linii, nawet w białych znakach, w przeciwnym razie PHP myśli, że jest częścią ciągu.