2009-02-10 14 views
11

¿Por qué debería usar <?php en lugar de <? en mi script php?<? Php en lugar de <?

+0

Esto es esencialmente una estafa de http://stackoverflow.com/questions/436688/difference-between-php-echo-sessionid-and-sessionid –

+0

no realmente; esa pregunta es sobre las etiquetas cortas (una forma rápida de hacer eco de los contenidos variables), ya que se trata de las diferentes convenciones de etiquetas. –

+0

Pero las respuestas hacen que esto sea un engaño. –

Respuesta

29

Las dos razones principales para evitar la etiqueta de apertura cortos son

  1. Máxima portabilidad - <?php funcionará en todos los servidores PHP habilitado, pero <? se puede desactivar
  2. Es idéntica a la apertura de la preámbulo XML - podría causar dolores de cabeza o la ejecución de análisis
+1

El argumento XML no cuenta. (http: //hsivonen.iki. fi/producing-xml /). El argumento XML está en la misma categoría que la decisión sobre una forma no estándar de escapar cadenas de SQL. El equipo de PHP cometió un gran error y mató accidentalmente esta característica de etiqueta corta. – stesch

+1

Cualquier administrador de servidor que deshabilita

+3

Jasper, por favor no abogue por dispararle a la gente a menos que esté dispuesto a mirar al objetivo a los ojos y apretar el gatillo usted mismo. –

3

Ambos son semánticamente iguales. <? es simplemente un acceso directo para la sintaxis completa.

+0

funciona exactamente igual en JSP – Vinze

+0

Nick. ese código que mostré era para ASP.NET MVC y era simplemente una analogía –

+0

Pero era una analogía incorrecta. PHP proporciona una etiqueta de utilidad como ASP.Net, pero es nickohrn

1

Cabe señalar que algunas configuraciones de servidor de PHP no son compatibles con una u otra de manera predeterminada. Por ejemplo, mi servidor web no es compatible con <? pero admite <? php

+1

Esto es técnicamente incorrecto: TODAS las instalaciones de php admiten la etiqueta de apertura normal (larga), mientras que la etiqueta de apertura abreviada puede estar deshabilitado Decir "algunos no admiten uno u otro" es objetivamente incorrecto. –

7

Hay dos métodos para iniciar PHP

<?php 

y

<? 

PHP también incluye

<?= 

Pero eso va a imprimir la variable detrás es una forma abreviada de eco.

Debe usar <? Php ya que es compatible con todos los tipos de servidores. Puede mover su código a una nueva solución de alojamiento o configurar un nuevo servidor predeterminado y las manos cortas podrían estar deshabilitadas.

5

Las etiquetas cortas <? (y <?=) podrían estar deshabilitadas. La versión larga <?php (y <?= = <?php echo) funciona en todas partes.

Podríamos discutir el sentido de esta decisión del equipo de PHP para hacer que tal cosa se pueda configurar, pero la esencia es que no se pueden usar las etiquetas cortas en el código portátil.

+0

¿Por qué alguien podría desactivar las etiquetas cortas? –

+0

@Orion Edwards: es una opción de configuración. php.ini hace que sea realmente difícil escribir código portátil. Más difícil de lo necesario. Si es una opción, entonces es un tabú para el código portátil. :-( – stesch

0

Wordpress Coding Standards dice only use <?php. No explican por qué.

Esto podría ser una pregunta religiosa.

+0

No creo que Stack Overflow tuviera comentarios cuando di esta respuesta. –

3

yo personalmente prefiero <? a ser apagado por dos razones

  1. PHP estándares de codificación a través de muchos proyectos grandes PHP recomendaría a desconectable
  2. crea problemas si va a generar documentos XML (docs XML comienzan con <?xml version="1.0" encoding="UTF-8" ?>)
  3. (bonus) <?php es más fácil de leer y visible que <?.
+1

# 3 es una característica MIS. Quiero que PHP se salga de mi maldita manera, no hacerse visible de manera prominente –

+0

Su punto 2 lo convierte en un bozo: http://hsivonen.iki.fi/producing-xml/ – stesch

0

el apoyo de la forma corta <?/<?= sintaxis se basa en el short_open_tag parameter in php.ini. Si aloja su propia base de código, es trivial para habilitar.Sin embargo, en un host web compartido/administrado, es posible que no tenga control sobre esta configuración.

Por lo tanto, para una máxima portabilidad, debe usar la sintaxis de forma larga.

2

Para agregar a la explicación de todos que las etiquetas cortas no deberían usarse porque podrían estar deshabilitadas (o incluso eliminadas de futuras versiones de PHP), la razón principal para que las etiquetas cortas queden obsoletas es que no son XML válidas. instrucciones "mientras que las etiquetas <?php son. Por lo tanto, las plantillas PHP con etiquetas <?php ... ?> pueden ser documentos XML válidos, mientras que las que usan etiquetas cortas no lo son.

1

Los argumentos de portabilidad son todos muy bien, pero yo voy a ser un sacrilegio y dicen que hay que seguir adelante y utilizar las etiquetas cortas si se quiere, a menos que esté haciendo algo que es para una distribución realmente amplia (de la fuente), o están enfocando algo muy xml.

a) Nunca he estado en una situación en la que no haya podido habilitar las etiquetas cortas. Usualmente están encendidos por defecto.

b) En la mayoría de las situaciones, el <? no se confundirá con <?xml porque están siendo analizados en diferentes niveles de la pila.

c) la etiqueta corta es menos obstructiva y por lo tanto desordena su código menos. Encuentro esto especialmente cierto con <?php echo contra <?=. (Podría argumentar que generalmente debería evitar usar cualquiera de esos, porque probablemente significa que está escribiendo código de espagueti, pero vamos, ¡esto es php!)

Por supuesto, todo depende de qué tipo de proyecto en el que está trabajando, pero para un sitio web básico, no creo que la etiqueta corta pueda dañarlo.

+0

Sin embargo, en el futuro, las etiquetas cortas PHP no estarán habilitadas y todo su código se romperá con la próxima versión principal. –

+0

¿Es eso verdad? ¿Hay una fuente oficial para eso? – sprugman

+0

En php.net, veo una recomendación para usar etiquetas largas, lo cual está bien, pero no veo nada oficial sobre etiquetas cortas que desaparezcan. – sprugman

Cuestiones relacionadas