A blog about data, information and IT, by Mario Alberich

Mar 06
2014

PHP: Cuál es la versión mínima de para mi aplicación

En el desarrollo y evolución de aplicaciones es muy habitual que se mezclen funcionalidades de las últimas versiones del lenguaje con otras más antiguas o incluso arcaicas. Es entonces cuando llega el momento en el que alguien (el cliente, el administrador de sistemas o la oferta de hosting) que nos plantea la duda: ¿Cuál es la versión mínima de PHP que necesita mi aplicación?

En ese momento puedes empezar a repasar todo tu código y experimentar un sudor frío... o quizá puedes pensar que alguien ha pasado por esto y comprobar si ha hecho algo para resolverlo.

PHP Compatibility


El proyecto PHP Compatibility (disponible en GitHub), que se ejecuta como estándar PHP CodeSniffer, aunque en el momento de escribir esto es necesario hacerlo desde la rama master del repositorio de GitHub, ya que la ejecución de la compatibilidad exige utilizar un parámetro de CodeSniffer aún no disponible en la versión estable.

Para llevar a cabo la prueba, puedes empezar por clonar el repositorio de PHP_CodeSniffer:

git clone https://github.com/squizlabs/PHP_CodeSniffer.git

Después, accede al directorio de CodeSniffer, hasta el directorio CodeSniffer/Standards:

cd PHP_Codesniffer/CodeSniffer/Standards

Allí podrás encontrar algunos de los estándares que ya vienen instalados con CodeSniffer. Para añadir PHPCompatibility, puedes clonar el repositorio en esta carpeta:

git clone https://github.com/wimg/PHPCompatibility.git

Ahora ya tienes el estándar instalado. Para comprovar que CodeSniffer lo detecta, dirígete al directorio scripts...

cd ../../scripts

Y lista los estándares disponibles:

./phpcs -i

Tras lo cual debería aparecerte PHPCompatibility en la lista:

The installed coding standards are PSR2, PHPCompatibility, Zend, Squiz, PEAR, PHPCS, MySource and PSR1

Ahora ya está todo a punto para ejecutar PHPCompatiblity. Para ejecutarlo utilizaremos el siguiente comando:

./phpcs --standard=PHPCompatibility --runtime-set testVersion 5.2 /ruta/a/codigo/php/que/quiero/analizar

Con esto puedo comprobar si mi código fuente funcionará con la versión 5.2.

Sólo me queda añadir dos comentarios antes de acabar:

  • Como en otros procesos relacionados con CodeSniffer, el análisis de compatibilidad se toma su tiempo. Por eso vale la pena que este tipo de procesos se realicen en background de forma automática (mediante phing o similares), para por ejemplo tener un control a cada commit/push realizado.
  • Todo el proceso anterior se puede simplificar en el momento en que CodeSniffer acepte el argumento --runtime-set, que actualmente no acepta. Si estás leyendo este artículo, no estaría de más comprovar que la versión de PEAR incorpora ya este parámetro.

Tags

gestión documental 10     Recuperación información 11     Linux 7     Usabilidad 5     open source 3     Tagging 12     lógica borrosa 2     fuentes de información 12     Google 6     off-topic 6     spam 2     grafos 6     Web social 11     modelización 12     Productividad 11     buscadores 2     utilidades 17     Profesionales 9     SEO 5     estándares 3     veracidad 3     relevancia 2     lingüística 2     PLN 2     lenguajes documentales 2     apis-mashups 3     reseñas 7     Flash 7     Gráficos estadísticos 13     Publicidad 3     Innovación 5     muestreo estadístico 9     PHP 14     internet 2     testeo 12     desarrollo 3     visualizacion 36     javascript 16     datos abiertos 9     elecciones 2     simulación 5     html5 7     phing 9     ssh 2     seguridad 3     indicadores 2     demografía 3     media 2     algoritmos 7     shell 4     mysql 2     backup 2     big data 6     twitter 2     d3js 11     revealjs 2     metodología 6     data-journalism 6     smartcities 2     NYT 2     privacidad 3     benchmarking 4     recopilaciones 21     magento 5     formacion 2     github 2     HHVM 3     psicología 2     angularjs 3     grep 2     nodejs 5     promises 2     mapreduce 3     crossfilter 2     exploración de datos 2     machine learning 2    

© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.