2011-06-01 20 views
6

Duplicar posibles:
Why do some scripts omit the closing php tag '?>'?etiqueta de cierre PHP

He estado leyendo algunos artículos sobre La omisión de cierre etiquetas PHP ya que dicen que es una buena práctica de programación en PHP si su El archivo .php no contiene otras cosas. Hay muchas preguntas como esa, pero después de probar lo que han hecho hasta ahora funcionó bien en mi máquina. Tal vez es un problema fijo o algo así?

Pero no entiendo por qué podría ser una buena práctica de programación, ya que trae espacio o algo así, pero he probado este y funciona muy bien.

Master.php

<?php 

echo "Master.php"; 

include "Slave.php"; 

header("Location:Slave.php"); 

?> 

Slave.php

<?php 

echo "Slave.php"; 

?> 

Realmente no bastante conseguir lo que el problema debe ser si yo no uso etiqueta de cierre php.

Gracias.

+0

No está duplicado ya que estoy haciendo una pregunta más específica con un ejemplo. – Tarik

+1

Es ante todo una recomendación de estilo de codificación para recién llegados. Evita ese infame error. Pero obviamente no es gran cosa si sabes lo que estás haciendo. (Podría ser muy sensato para el código distribuido.) – mario

+0

Está usando más palabras, pero no está siendo más específico. Estás haciendo la misma pregunta. – meagar

Respuesta

10

El problema principal es que puede incluir espacios en blanco adicionales (pero puede ser cualquier carácter) después del cierre ?> (además de uno \n que PHP permite, gracias Mario).

Este espacio en blanco adicional aparece en PHP como salida para enviar. Esto hace que PHP comience a enviar el cuerpo de la respuesta, por lo tanto, hacer que los encabezados adicionales sean configurados/modificados imposibles.

Esto es difícil de depurar (ya que el espacio en blanco es generalmente invisible en los editores de texto) y suele ser la causa de los temidos encabezados que ya han enviado el error.

+0

Lo he intentado y el código funcionó bien, excepto por este resultado 'Slave.php \ n', pero funcionó finalmente ... – Tarik

+1

Esa sola nueva línea después de'?> 'Es devorada por PHP. Son nuevas líneas adicionales y retornos de carro u otros espacios en blanco que causan el error. (Bueno, la misma diferencia ...) – mario

+0

@mario Gracias, mal ejemplo, voy a actualizar :) – alex

2

el problema con la etiqueta de cierre es que cualquier espacio en blanco después de la última?> Puede causar errores y es muy difícil de detectar mientras se corrige el error.

0

Por lo general, es mejor NO finaliza el guión con la etiqueta de cierre PHP.

En su caso, un espacio en blanco podría permanecer después de ?> (es muy astuto y difícil saber dónde está el error si algo se rompe por este motivo), por lo que se consideraría como salida y no podrá iniciar sesión, por ejemplo, o encabezados de pase en caso de que esté desarrollando un sitio web.

Solo mi opinión. Probablemente nunca termine mis scripts con la etiqueta de cierre

0

El problema proviene de tener cualquier número de saltos de línea distintos de 1: algunos analizadores de php se molestan si no hay una nueva línea en ese extremo, pero si tiene más de uno , se imprime ya que cualquier cosa que esté fuera de las etiquetas php se considera HTML.

El problema más común es que un archivo de biblioteca/modelo tendrá un salto de línea adicional, haciendo que los encabezados se envíen mucho antes de que se cree una instancia de la página/vista.

Cuestiones relacionadas