studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones php build continuous-integration phing xinc

programacion - Herramientas de compilación/integración de PHP: ¿Las usas?



manual de programacion android pdf (4)

En un proyecto en el que estoy trabajando ahora estamos usando phpUnderControl para ejecutar pruebas y obtener comentarios rápidos cuando algo no funciona. Planeamos usarlo para ejecutar otras pruebas, como algunas escritas en Watir .

Después de leer el artículo "Flujo de trabajo de PHP moderno" en la edición de noviembre de 2008 de la revista php | architect, en la que se analizaron las pruebas de unidades ( phpUnit ), las herramientas de compilación ( Phing ) y la integración continua ( Xinc ), me inspiró para obtener más información sobre algunos Herramientas disponibles para PHP, especialmente Phing.

En el pasado, a menudo manejaba la implementación en un servidor de producción ejecutando el sitio en vivo como una copia de trabajo de Subversion y simplemente ejecutando una "actualización svn" en el cuadro de producción para implementar la última versión del código.

¿Usas herramientas de compilación para código PHP? ¿Qué ventajas cree que ofrecen sobre el despliegue directo desde Subversion? ¿Qué debo tener en cuenta, o qué errores puedo enfrentar?


Miré a Phing porque se ve bastante impresionante. Para el proyecto en el que estoy trabajando, en realidad estoy usando la hormiga de Apache . Lo uso para hacer varias cosas:

  1. Combine y comprima Javascript y CSS (compresión hecha usando el compresor YUI)
  2. Reemplace los archivos de configuración estándar con los archivos de configuración de producción (por ejemplo, cambie el nombre de config.php.production a config.php)
  3. Elimine los archivos innecesarios (como el archivo de compilación ant, build.xml)

Creo que vale la pena mirar Phing a través de Ant porque es PHP nativo, lo que podría ser bueno. Además, si está haciendo algo más que simplemente copiar / mover archivos, tenga en cuenta los problemas de rendimiento cuando se mude al entorno de producción. Tuve un problema en el que el compresor YUI funcionaba bien en mi máquina local, pero en el VPS relativamente pequeño era muy lento.


Un gran problema que veo con Phing es que crea una capa innecesaria de direccionamiento indirecto. PHP es un lenguaje de scripting, y por lo tanto podría ejecutarse directamente. El uso de la configuración XML por parte de Phing no es adecuado para el lenguaje: proporciona una configuración declarativa más legible, pero a costa de sacrificar la flexibilidad del lenguaje. Con Ant (la inspiración para esa ruta) tiene sentido ya que Java no tenía esa flexibilidad ya que es menos dinámico y requiere compilación.

Desafortunadamente, no he visto muchas buenas alternativas en el espacio de PHP y, a diferencia de otros lenguajes, las herramientas de compilación no son tan esenciales o una parte de la cultura, por lo que la evolución de otra opción bien soportada puede no suceder pronto.

Por lo tanto, me atendría a las opciones que están más cerca de lo que PHP podría hacer con las culturas que apoyan más agresivamente las herramientas de construcción. Normalmente uso Gradle . Rake también hace un gran trabajo dependiendo del idioma que quieras engañar (y puede haber otras opciones similares). También debes sopesar cosas como el soporte de Webdriver si te gusta ese tipo de cosas. De lo contrario, crear una solución liviana con PHP y / o BASH debería cubrir todo mientras se mantiene la transparencia.


He usado tanto Phing como Ant y prefiero este último mucho más. Inicialmente opté por Phing porque estaba escrito en PHP, pero para ser honesto, no es tan maduro como Ant. Al final, vale la pena tener un sistema de construcción maduro con una gran comunidad.

Cosas hechas con Ant / Phing:

  1. Desde un checkout base a un idioma específico, asegúrese de que haya dependencias (otras librerías, directorios, etc.)
  2. Si los tienes, compila plantillas, etc.
  3. Lleve la base de datos de destino a la versión requerida, dependiendo de la versión del código extraído
  4. Ejecutar pruebas unitarias, etc.