2010-07-27 34 views
9

Duplicar posible:
why in some scripts they omit the closing php tag ?>¿No es necesaria la etiqueta de cierre de PHP?

Como se explica en la Code Igniter style guide, parece que las etiquetas de cierre de PHP son opcionales. Incluso dice que debes evitarlo por varias razones.

¿Alguien podría tener más información sobre este tema?

Gracias!

+10

posible duplicado de [por qué en algunos scripts que omiten la etiqueta de cierre php?>] (Http://stackoverflow.com/questions/3219383/why-in-some-scripts-they-omit-the-closing-php -tag) - ¿realmente notaron que SO sugiere preguntas cuando ingresas el tuyo? ¿Ustedes [buscar en absoluto] (http://stackoverflow.com/search?q=closing+tags+php)? – Gordon

+0

también: http://stackoverflow.com/questions/1656744/when-not-to-close-a-php-file/1656752#1656752 – karim79

+0

lo aconsejan no propone grandes respuestas a mí, lo siento –

Respuesta

12

Una razón por la que las personas evitan la etiqueta de cierre> es evitar "los encabezados ya han enviado el error" debido a saltos de línea u otros caracteres invisibles después de la etiqueta?>.

+0

Esta es la razón de NetBeans da FWIW. – pbhj

3

Es perfectamente válido omitir la etiqueta de cierre. Una de las razones para hacerlo es evitar espacios en blanco no deseados que pueden entrar en conflicto con los encabezados.

1

Solía ​​evitar el envío de encabezados a los archivos incluidos. Por ejemplo, si el archivo incluido contiene la etiqueta de cierre de PHP y el carácter de espacio en él o nueva línea, este archivo envía encabezados y no podrá cambiar la información de los encabezados en el futuro.

0

Normalmente utilizo las etiquetas de cierre, pero he oído hablar de este estilo de código cuando uso Code Igniter. Supongo que al omitir la etiqueta de cierre, evitas posibles problemas con los caracteres de "espacio en blanco" que podrían terminar rompiendo tus sesiones, lo que puede provocar un error de "encabezados ya enviados".

1

Del manual (http://www.php.net/manual/en/language.basic-syntax.instruction-separation.php):

Nota: La etiqueta de cierre de un bloque de PHP al final de un archivo es opcional, y en algunos casos omitiendo es útil al usar include () o require(), por lo que espacio en blanco no deseado no se producirá en al final de los archivos, y aún podrá ser capaz de agregar encabezados a la respuesta más adelante. También es útil si usa buffering de salida y no desea que vea espacios en blanco no deseados adicionales en al final de las partes generadas por los archivos incluidos.

5

No hay mucho que decir sobre el tema.

un archivo PHP que termina así:

<php 
//code 
?> 

hará realmente PHP enviar cabeceras al cliente, debido al espacio en blanco después de la etiqueta de cierre ?>, que se puede ver si ha resaltado el bloque de código. Los espacios en blanco o los saltos de línea al final de los archivos pueden ser fáciles de detectar y difíciles de rastrear.

Una vez que se envían los encabezados, es imposible hacer cosas como cambiar la línea de estado o el tipo de contenido.

Dado que una etiqueta de cierre está implícita al final de un archivo, puede simplemente omitir la etiqueta de cierre para los archivos con solo código PHP. Si lo hace, cualquier espacio en blanco al final se tratará como espacios en blanco en el código, no espacios en blanco en el contenido, y se ignorará.

Cuestiones relacionadas