Nueva pregunta

Pregunta:

Fecha: 14-07-2017 04:39:21 (En Español)

Mejores prácticas PHP: uso de las etiquetas <?, <?=, <?php y <?php echo[Resuelta]



Cuando PHP analiza un fichero, busca las etiquetas de apertura y cierre, que son <?php y ?>, y que indican a PHP dónde empezar y finalizar la interpretación del código.

PHP también permite la etiqueta de apertura abreviada <?, la cual está desaconsejada debido a que sólo está disponible si se habilita con la directiva short_open_tag del fichero de configuración. Fuente: http://php.net/manual/es/language.basic-syntax.phptags.php

Para poder usar la etiqueta de apertura de un script PHP en la forma abreviada <? , el parámetro de configuración short_open_tag debe estar activo, por defecto lo esta (boolean, default="1"), pero puede desactivarse si se quiere utilizar PHP junto con XML y las etiquetas <?xml ?> en línea, por lo que no siempre short_open_tag esta activo.

Como short_open_tag fue marcado como PHP_INI_PERDIR en PHP >= 5.3.0 (o sea, desde PHP 5.3.0), este se puede configurar en php.ini, .htaccess, httpd.conf o .user.ini

Desde php.ini
short_open_tag=On
short_open_tag=Off


Desde .htaccess
<IfModule mod_php5.c>
  php_value short_open_tag 1
</IfModule>
Documentación oficial: Ini Core short_open_tag

Otro tema a considerar es que algunos editores no reconocen PHP encerrado entre etiquetas <? ?>, en otros casos el reconocimiento puede ser configurado (como Netbeans, dentro de la configuración del proyecto, con la tilde "Allow short tags(<?)".


Nota: Por defecto esta opción esta desativada.

En versiones anteriores a PHP 5.4.0, es cuando la abreviatura <?= (la cual equivalente a <? echo) se ve afectada por el parámetro short_open_tag, requería que el mismo este activado para poder usarla, pero a partir de PHP 5.4.0, el tag <?= siempre está disponible. Por lo que en versiones de PHP 5.4.0 en adelante podremos tener el formato corto <? desactivado y usar la abreviatura de apertura y "echo" <?=, lo cual me parece interesante, teniendo como premisa que hoy no podemos estar desarrollando con una versión de PHP menor a 5.6 y menos con funciones no compatibles con la rama PHP 7 (claro caso del conector PHP MySQL, el cual debe ser migrado a MySQLi, pero este ya es otro tema).

Con respecto a <?php y <?php echo, estos no podrán ser desactivados y permite el uso de etiquetas <?xml ?> en línea (deshabilitando short_open_tag).

Un hecho: si el parámetro short_open_tag esta desactivado, se debe usar siempre la forma no abreviada de la etiqueta de apertura de PHP <?php

En conclusión: para ser "cross config" se debe codificar con la forma que no podrá ser desactivada nunca, o sea <?php y <?php echo, y si ya no usas versiones de PHP inferiores a 5.4 puedes usar con toda tranquilidad el atajo <?=

Como un extra, me gustaría recordar que un programador PHP debe estar en conocimiento de que versión PHP corre el servidor que usa, por lo que aquí les dejo un resumen de algunas funciones interesantes:

phpinfo(): muestra información sobre la configuración de PHP, no esta siempre disponible, puede estar desativada, ya que un mal uso representa un problema de seguridad (maneja información de configuración sensible). Documentación oficial: http://php.net/manual/es/function.phpinfo.php

phpversion(): devuelve la versión de PHP. Documentación oficial: http://php.net/manual/es/function.phpversion.php

Saludos a todos y buen código!
Etiquetas: Aporte - Empezar a programar - Mejores Prácticas - PHP Votos: 8 - Respuestas: 3 - Vistas: 68 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 14-07-2017 09:06:47 Fernando,
    Muy buen aporte pero puede llegar a confundir por un par de cosas:
    Las etiquetas de inicio para un script PHP son(eran, dependiendo de la versión que manejes):

    <?php -> etiqueta oficial de inicio (vigente y no afectada por la configuración)
    <? -> forma abreviada (vigente, afectada por la configuracion de short_open_tag|enable_short_tags) que se recomienda no utilizar por portabilidad
    <%, %>, <%= -> Estilo ASP (Removidas en PHP7 Dependen de una configuración específica)
    <script language="php">, <script> -> etiquetas tipo HTML (Removidas en PHP7)

    Estas etiquetas indican que lo que envuelven es código que debe ser interpretado como PHP.

    La siguiente línea:

    <?php echo NO es una etiqueta de inicio para un script sino una etiqueta de inicio de script seguida de una instrucción de impresión.

    Es similar a hacer cualquiera de las siguientes:
    <?php print() ?>
    <?php myFunción() ?>

    Ahora bien, la "función" echo tiene un método abreviado que se puede usar en plantillas:

    <?=[VARIABLE]?> que es lo mismo que hacer <?php echo [VARIABLE] ?>

    Saludos y de nueva cuenta gracias por el aporte!
      Votos: 5 - Link respuesta
     
  • Fecha: 14-07-2017 11:37:35 Gracias Ernesto por tu comentario, todo suma! +1

    Me gustaría recalcar la conclusión: para ser "cross config" se debe codificar con la forma que no podrá ser desactivada nunca, o sea <?php y <?php echo, y si ya no usas versiones de PHP inferiores a 5.4, puedes usar con toda tranquilidad el atajo <?=

    Saludos y buen código!
      Votos: 3 - Link respuesta
     
  • Fecha: 15-07-2017 12:04:04 Otro punto a comentar es la etiqueta de cierre, la cual no se aconseja colocar siempre, veamos según la documentación oficial:

    Si un fichero contiene solamente código de PHP, es preferible omitir la etiqueta de cierre de PHP la final del mismo. Así se previene la adición de espacios en blanco o nuevas líneas accidentales después de la etiqueta de cierre, lo cual causaría efectos no deseados debido a que PHP comenzará la salida del búfer cuando no había intención por parte del programador de enviar ninguna salida en ese punto del script.
    Fuente: http://php.net/manual/es/language.basic-syntax.phptags.php

    Saludos y buen código!
      Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión