2008-08-31 9 views
24

¿Alguien usa Phing para implementar aplicaciones PHP y, de ser así, cómo lo usa? Actualmente tenemos un script "setup" escrito a mano que ejecutamos cada vez que implementamos una nueva instancia de nuestro proyecto. Acabamos de salir de SVN y ejecutarlo. Establece algunas variables de configuración básicas, instala o recarga la base de datos y genera un v-host para la instancia del sitio.¿Utiliza Phing?

A menudo he pensado que tal vez deberíamos estar usando Phing. No he usado mucho, por lo que no tengo una idea real de lo que se supone que Phing debe hacer, aparte de programar la copia de archivos de un lugar a otro, de forma muy similar a como lo hace nuestro script de configuración. ¿Cuáles son algunos de los usos más avanzados de los que puede dar ejemplos para ayudarme a comprender por qué quisiéramos o no integrar Phing en nuestro proceso?

Respuesta

16

De Federico Cargnelutti de blog post:

características incluyen transformaciones de archivo (por ejemplo, simbólicos de recambio, transformación XSLT, Smarty transformaciones plantilla), archivo las operaciones del sistema, soporte interactivo acumulación , la ejecución de SQL, CVS operaciones , herramientas para crear paquetes PEAR , y mucho más.

Por supuesto, puede escribir scripts personalizados para todo lo anterior. Sin embargo, usar una herramienta de compilación especializada como Phing le brinda una serie de beneficios. Utilizará un marco probado para que, en lugar de tener que preocuparse por configurar una "infraestructura", pueda centrarse en el código que necesita para escribir. Usar Phing también hará que sea más fácil para cuando los nuevos miembros se unan a tu equipo, podrán entender lo que está pasando si han usado antes Phing (o Ant, que es en lo que se basa Phing).

3

No veo ninguna razón convincente para ir con phing. Quiero decir, ¿deberían los programadores de PHP intentar una reescritura de Eclipse "solo porque" de alguna manera podría ser más fácil escribir complementos de Eclipse en PHP? No lo creo.

Ant tiene una mejor documentación, incluidos algunos buenos libros de O'Reilly, y está bien establecida en el universo de Java, por lo que evita los problemas de (1) "todavía no hemos copiado la característica X a Phing" y (2) el riesgo de que el proyecto Phing muera. Here's un artículo sobre cómo configurar PHPUnit para que funcione con hormiga y cruisecontrol: no es tan difícil. Y obtienes integración de eclipse de forma gratuita.

¡Buena suerte!

+4

Bueno, reescribir Eclipse probablemente no sea la mejor idea, tener el puerto Ant en PHP es una gran idea. La razón es simple: tareas personalizadas, que se pueden hacer en PHP simple y antiguo (no todo el mundo conoce Java lo suficiente). La creación de aplicaciones, más que a menudo, implica una funcionalidad personalizada que exige ser automatizada, y la capacidad de hacerlo en el idioma en el que domina, bueno, para mí podría considerarse una gran ventaja. P.S. Si está utilizando Java, entonces probablemente debería mirar a Maven :)) –

+0

La documentación de Ant no es mejor que la de Phing. Sí, los documentos de Phing carecen de más ejemplos, pero los de Ant también. – cweiske

+0

No tiene que volver a escribir ANT en PHP para crear tareas personalizadas. Todo lo que necesita debe ser un recopilatek o compilador que le permita ejecutar scripts PHP desde ANT. –

7

Me mudé de Ant a Phing 'solo porque' es PHP. Lo uso para exportar desde diferentes repositorios de subversión, copiar cosas, crear diferentes paquetes de instalación, etc. todo eso con un archivo xml reutilizable de 20 líneas y un archivo de configuración con cosas específicas del proyecto. De ninguna manera podría hacerlo tan rápido con un script personalizado. También planeo integrar la generación de documentación api y pruebas unitarias. ¡Quiéralo!

7

La respuesta convincente para mí es que phing entiende PHP classpaths. Ant no. No quiero tener un Ant build.xml lleno de comandos exec. Resulta que soy principalmente un programador de Java y todavía uso Phing. Es la mejor herramienta para el trabajo.

+2

UMMM ... para la ejecución de scripts PHP con ANT, todo lo que necesita es "#!/Usr/local/bin/php" (o la ubicación de su ejecutable php) en la parte superior de su script PHP. Luego simplemente llama al script desde ANT como lo haría con cualquier operación de línea de comandos de Linux. Puede resolver cualquier operación de código personalizado, incluidos los comandos SQL de PHP, de esa manera. –

3

Utilizamos phing desplegar SemanticScuttle:

  • generar archivo zip para su distribución
  • crear PEAR paquete
  • carga zip a SourceForge
  • actualización de la PEAR channel con el nuevo archivo de paquete
  • render Reestructurar la documentación del texto en archivos html y cargarlos. Actualmente con exec pero estoy en el camino escribiendo un separate task para ello.

Cargar el archivo zip y el canal se realiza a través de rsync, que por desgracia no es compatible con Phing a través de una tarea especial - pero utilizando exec siempre es posible y funciona muy bien.

Al final, ahorra mucho tiempo y podemos probar, empaquetar e implementar nuestra aplicación con un solo comando (lo que nos da otro punto en el Joel Test). No me gustaría vivir sin eso.

Ver el build.xml code.