2010-09-13 21 views
35

Por ejemplo:En PHP, ¿qué representa "<<<"?

$sql = <<<MySQL_QUERY 
+0

Puede leer la documentación de PHP en la sintaxis [Heredoc] (http://www.php.net/manual/en/language.types.spa.php#language.types.string.syntax.heredoc) para una mejor entendimiento. –

+0

Si necesita algún otro símbolo explicado, [esta es una buena referencia] (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

Respuesta

33

Eso es la sintaxis heredoc. Empiezas una cadena heredoc poniendo <<< más un token de tu elección, y lo terminas poniendo solo el token (¡y nada más!) En una nueva línea. Para su comodidad, hay una excepción: se le permite agregar un solo punto y coma después del delimitador final.

Ejemplo:

echo <<<HEREDOC 
This is a heredoc string. 

Newlines and everything else is preserved. 
HEREDOC; 
+2

¿Cuál es la diferencia entre esto y una cadena normal? ¿Por qué no simplemente 'echo? Esto es un heredoc ....." ' – CodyBugstein

+0

@Imray por lo que puedo recordar, puede poner comillas simples y dobles en el heredoc, así como las variables y todo va a funcionar. Si desea utilizar comillas dobles en su declaración 'echo', tendría que escapar de ellas. Aún así, dejé de usar heredoc poco después de comenzar, porque no me gustaba romper mis patrones de sangría. Ahora formé muchas de mis cadenas como matrices que luego 'implosionan (" \ n ", $ string_array)'. –

+0

Yo diría que es muy útil si quieres inyectar diferentes idiomas. Ser capaz de utilizar líneas nuevas sin concatenación (que podría romper la finalización del código, etc.) es realmente agradable. – SourceOverflow

16

Es el comienzo de una cadena que utiliza el HEREDOC syntax.

Una tercera forma de delimitar cadenas es la sintaxis heredoc: < < <.

Después de este operador, se proporciona un identificador, luego una nueva línea. La cadena en sí sigue, y luego el mismo identificador nuevamente para cerrar la cita.

+0

Genial, no lo sabía ... Leí el enlace que me enviaste y, sinceramente, entiendo por qué ¡Podría vivir sin eso hasta ahora! ;) ¿Cuál sería la ventaja de usar eso para una cadena? – Gabriel

+7

@Gabriel le permite usar ambos tipos de citas dentro de la cadena sin romperla: '<<< END ¡Hola," $ nombre "! ¿Cómo está '$ esposo' hoy?END 'Un gran dolor en el culo es, sin embargo, que el marcador' END 'no debe estar sangrado, por lo que el contenido de Heredoc generalmente rompe la sangría de su código. De hecho, no es realmente una de las características más importantes de PHP :) –

+0

@YiJiang que en realidad se debió a la localización alemana. Maldita geolocalización, siempre me da el enlace equivocado, aunque el inglés es el idioma de mi navegador. Corrected, cheers :) –

7

Es PHP heredoc.

Ejemplo:

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

Es la heredoc syntax.

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

Esto se llama un heredoc, y que le permite hacer un largo trozo de texto que va en varias líneas. Puedes poner variables PHP allí y reemplazarán con el valor. La palabra GRÁFICO puede ser cualquier cosa. Simplemente tiene que ser el mismo para comenzar y detenerse donde comienza el texto citado.

Puede hacer lo mismo agregando varias cadenas entre comillas, pero esto es más limpio la mayor parte del tiempo para documentos extendidos como este texto HTML. También hay algo llamado nowdoc que es como una cadena de comillas simples en PHP, pero estas no le permitirán usar variables dentro de ellas.

+0

Oh bien, gracias. en lugar de buscar por mucho tiempo, pensé que simplemente haría una pregunta rápida – user1464971

5

Es un heredoc, para cadenas largas que no tiene que preocuparse por comillas y otras cosas. Si observa la palabra TABLA y luego hay una línea que dice TABLA ;, que indica el final de la cadena.

Lo importante que debe recordar al usar este formato es que cualquiera que sea la cadena que use para definir el final de la cadena (como CHART en este caso), esa palabra debe aparecer en una línea propia, seguida de una punto y coma, y ​​NO pueden aparecer caracteres después del punto y coma en la misma línea, incluso el espacio en blanco, de lo contrario, PHP piensa que es parte de la cadena.