Por qué no deberíamos usar los "short tags" <? y <?=

Recientemente en una discusión en un foro uno de los tantos "expertos" que pueblan la comunidad PHP se mostraba contrario a mi explicación de qué cosas debía corregir en su código otro usuario.

Puntualmente la situación era la siguiente:

---Cita (Autor enriqueplace)---

[...]Sustituye los <?= por <?php echo, lo mismo que <? por <?php, está en desuso (por más que veas algunos ejemplos en el manual de Zend, eso es error de algún programador descarriado ;-))[...]

---Fin de Cita---


Y el usuario respondía:

"Che guru, fijate que lo que esta mal es usar el tag como "<?", pero no esta depcrecated el uso de "<?="

Chau guru."


En lo personal puedo aceptar (y me parece obvio) que desarrolladores duden y vuelvan a preguntar, pero no que contradigan sin fundamentos por el simple hecho que "ellos lo usan".

Dado que la discusión se trasladó al ámbito personal (la idea de esta persona era simplemente descalificar), nuestros aportes fueron borrados por el administrador del foro. Como considero que vale la pena la explicación sobre por qué no debemos usar los "short tags" o "etiquetas cortas" de apertura y cierre de PHP (en lo personal hace años evito esta práctica, pero he visto que algunos desarrolladores aún siguen usando).

Aquí la copia de la respuesta dada en el foro:

"Me remito al manual de PHP (que este capítulo está escrito hace mucho tiempo):

Sintaxis básica del lenguaje
http://www.php.net/manual/es/languag...ax.phpmode.php

Donde da ejemplos de todos los tags posibles para PHP, y el segundo dice:

2. <? echo ("esta es la más simple, una instrucción de procesado SGML \n"); ?>
<?= expression ?> Esto es una abreviatura de "<? echo expression ?>"


Este ejemplo hacer referencia al "formato corto de etiquetas" o "short tags", por lo cual el manual aclara:

"El método segundo no siempre está disponible. El formato corto de etiquetas está disponible con la función short_tags() (sólo PHP 3), activando el parámetro del fichero de configuración de PHP short_open_tag, o compilando PHP con la opción --enable-short-tags del comando configure. Aunque esté activa por defecto en php.ini-dist, se desaconseja el uso del formato de etiquetas corto."

Aunque esto pudiera no ser suficiente, el manual vuelve a reiterarlo un poco más abajo y ampliando otras situaciones donde además no es conveniente:

"Note: No se debe usar el formato corto de etiquetas cuando se desarrollen aplicaciones o bibliotecas con intención de redistribuirlas, o cuando se desarrolle para servidores que no están bajo nuestro control, porque puede ser que el formato corto de etiquetas no esté soportado en el servidor. Para generar código portable y redistribuíble, asegúrate de no usar el formato corto de etiquetas."

No recuerdo ahora (tampoco vale la pena buscarlo en este contexto) pero creo haber leído que en la versión 6 o 7 de PHP estos tags serán eliminados.

PD:
ahh, casi me olvido, en el manual de Zend Framework dice claramente "Short tags are never allowed" ("las etiquetas cortas nunca son permitidas"), de ahí mi expresión que "a pesar de ver ejemplos en el manual de Zend, no usarlos como excusa para decir "que no están en desuso / permitidos"".


Nota: Si se toman el tiempo para investigar un poco verán que las fuentes pueden ser contradictorias con sus sugerencias: el manual de PHP dice no usarlos, la guía de buenas prácticas del wiki de los desarrolladores de Zend Framework recomienda por un lado tampoco usarlos, pero por otro lado sí (en determinadas condiciones), y luego se pueden ver ejemplos de código en los dos sentidos (con y sin "short tags").

Claramente la respuesta válida no es "los short tags se pueden usar porque PHP lo permite usar" (de esa forma validaríamos muchas prácticas erróneas) o porque simplemente "yo lo uso hace tiempo" o porque "nunca leí nada que dijera lo contrario" (y ni siquiera han consultado el manual oficial).

En conclusión

Mi recomendación es que no uses los "short tags", usa siempre <?php y <?php echo, solo tienes que escribir unos caracteres más y usas una sintaxis que no te trae problemas en ningún contexto y es la versión "oficial" de los tags de PHP (lo otro es una abreviación).

Promoción por Febrero 2009: Libro + 25% de descuento en cursos

Luego de recibir varias sugerencias de usuarios que quieren comprar el libro y a su vez hacer un curso en marzo, me solicitaron la posibilidad de tener algún descuento, así que pasamos a la siguiente promoción: ;-)

Por cada libro que se adquiera durante Febrero 2009 obtendrán un 25% de descuento en los cursos que se iniciarán en Marzo 2009 (proporcional al valor del libro):
  1. Libro Versión Económica 30 usd -> obtienes descuento de 7,5 usd
  2. Libro Versión Estándar 50 usd -> obtienes descuento de 12,5 usd
  3. Libro Versión Extendida 60 usd -> obtienes descuento de 15 usd
Aclaraciones
  • Al contrario de promociones típicas que dicen "solo para productos nuevos", esta promoción incluye a todos los usuarios que ya han comprado el libro (obviamente no voy a dejar fuera a mis primeros lectores ;-)).
  • Los descuentos se aplican por persona y por libro, no es transferible, y solo para los cursos que inician en Marzo 2009.
  • Si se adquiere más de un curso, el descuento de mantiene para cada curso, por ejemplo: Libro Extendido, 15 usd de descuento para el curso de Análisis y otros 15 de descuento para el de Zend (obviamente, estás pagando por un libro y 2 cursos).
  • Para empresas / grupos / organizaciones, estudiaré caso a caso en base a la cantidad de usuarios, me envían un email y lo analizo.
Recordatorio: solo por Febrero 2009 y para los cursos que inician en Marzo 2009, el descuento no se transfiere para otros períodos.

Próximamente más novedades ;-)

¡Disponible el libro: "POO para PHP5"! (actualizado)


Bueno, luego de revisarlo una y otra vez (y otra vez) ya se encuentra terminada la primer versión del libro que junta toda la experiencia acumulada en todos los cursos dictados a la fecha (tanto a distancia como presenciales).

Breve resumen del temario incluido
  • Introducción a los conceptos
  • Cómo pensar en objetos
  • Diagramas UML
  • Todas las Relaciones entre los Objetos
  • Traducción de UML a Código y viceversa.
  • Múltiples ejercicios con sus soluciones, aplicando los conceptos vistos.
  • Cómo desarrollar una clase de Persistencia, Paquetes, Arquitectura en 3 capas, Polimorfismo, uso de Interfaces, Programación Orientada a la Implementación versus Programación Orientada a la Interfaz, etc.
  • Se agregan nuevos capítulos sobre Paquetes y Manejo de Excepciones.

En la actualidad el libro consta de 22 capítulos y 265 páginas.

Libro + Servicio = Valor Agregado

Si decides adquirir el producto completo podrás tener acceso a un servicio personalizado a través de usuarios.surforce.com y por el período de tiempo que elijas obtendrás:

  1. Poder hacer consultas directas al autor: cualquier parte del libro, tanto dudas sobre ejemplos, capítulos, ejercicios, etc. Estas se responderán normalmente durante las próximas 24-48hs (aunque lo más probable que obtengas una respuesta en pocas horas).
  2. Acceso a todos los fuentes (php, uml, etc): generalmente en un libro se destaca el código principal de una solución o ejemplo y no se escriben páginas y páginas con todo el código ya que se hace difícil de leer y seguir. Por lo tanto queda disponible todo el código original de los ejemplos completos de todos los ejercicios del libro, revisados y comentados.
  3. Actualizaciones Mensuales: tanto correcciones como ejemplos o hasta capítulos nuevos, lo que podrá incluir a futuro acceso a material multimedia (screencasts, podcasts, etc).
  4. Cambiar el Contenido del Libro: si consideras que algún capítulo, ejemplo o ejercicio podría mejorarse, o algún tema que ves no se encuentra tratado en el libro, tu sugerencia será recibida y tenida en cuenta para la próxima actualización mensual del libro.

A quién va dirigido el libro
  1. A todo desarrollador de PHP que quiera aprender de manera sólida todos los conceptos de la POO bajo la última versión PHP5.
  2. Alumnos de los cursos que quieren tener el último material revisado y ampliado.
  3. Futuros alumnos del curso de POO que quieren tener un material de lectura antes de iniciar las clases (cada año se renuevan los ejercicios que hay que resolver semanalmente).
  4. Quienes no tienen tiempo suficiente para realizar un curso a distancia por espacio de 2 meses seguidos y quieren seguir su propio ritmo como si tuvieran un docente para hacerle consultas.

Costo del Libro Digital

El libro es el mismo, se entrega la última versión vigente del libro (pdf), pero difiere el período de tiempo de soporte del autor, recibir actualizaciones y "material extra" (todo accediendo a usuarios.surforce.com).
  1. Versión Económica - 2 meses de servicios: 30 usd
  2. Versión Estándar - 4 meses de servicios: 50 usd
  3. Versión Extendida - 6 meses de servicios: 60 usd
Cada versión asegura por lo menos 1 actualización por mes de nuevas versiones del libro (correcciones, nuevos capítulos, material extra, screencasts, etc), acceso a todo el código fuente y respuestas a todas las dudas que puedan surgir en su lectura.

Más que un libro, es un servicio que busca transmitir "conocimientos y experiencia" y aumentar su alcance "un poco más allá de lo tradicional".

Forma de Pago & Entrega

De la misma forma que hemos hecho con los cursos / talleres a distancia, a través de giros por Paypal o por Western Union, dentro de las siguientes 24hs se hace la entrega de la última versión vigente del libro (pdf) y en aproximadamente 48hs se habilita el acceso al sistema usuarios.surforce.com (la demora se debe a cambios en el sistema que estoy implementando en estos días).

Capítulo de ejemplo


Si deseas hacer una consulta, envía un email a: libros@surforce.com

Si deseas adquirir el libro, envía un email a: ventas@surforce.com

Todas las dudas o sugerencias, tanto en los comentarios de este post como en el email, bienvenidas ;-)

En una horas: Libro Digital sobre "POO para PHP5"



En unas horas queda disponible para su compra mi primer libro digital, que incluirá además un conjunto de servicios: entre ellos, poder hacer consultas de cualquier tema del libro con respuesta directa del autor, actualizaciones mensuales, etc.

Capítulo de ejemplo


En un rato más novedades. ;-)

Entradas populares