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

May 29
2013

Automatizar con Phing (II) - projects y targets

En un artículo anterior, Phing quedó instalado y listo para probar. Así que ahora toca ponerlo en marcha, manos a la obra. Crearemos un directorio llamado "phingtest", donde crearemos un archivo llamado build.xml.  Introduciremos el siguiente contenido en el XML:


Esto es un primer comentario
¿Te ha gustado?
Tu respuesta es '${like}'


Ahora, guardando y abriendo un terminal, podemos dirigirnos a la carpeta phingtest y teclear:

~$ phing

Cuyo resultado es:

[echo] Esto es un primer comentario
[input] ¿Te ha gustado? Sí
[echo] Tu respuesta es 'Sí'

Builds y targets


En el archivo XML (que en Phing se denomina buildfile) podemos ver que el tag raíz es .  Todas las operaciones disponibles para un archivo de build estarán dentro de este tag.

El tag project contiene dos atributos:

  • name: Identifica el proyecto de forma única.
  • default: Es el target que se ejecutarà por defecto.


Pero ¿Qué es un target? Pues son las tareas programadas que se pueden realizar. A excepción que indiquemos lo contrario, todas los targets se pueden ejecutar directamente, y se pueden entender como pequeños procesos batch (o interactivos si añadimos inputs).  En otros contextos serían comandos complejos, macros o scripts, formados por tareas (tasks en la documentación de Phing).

Pero el caso es que, y esto es lo importante, las tareas son clases PHP, y lo que hace Phing es ahorrarnos la programación a medida para situaciones que no requieren de tal complejidad.

Eso siempre con el permiso de la sintaxis XML. Pero es relativamente fácil acostumbrarse, para el esfuerzo que te ahorras ;-).

Ejemplo: introducción de datos

En el ejemplo inicial todo es muy simple: dos echos y la entrada de texto. Pero vamos a mejorarlo un poco. Vamos a establecer un valor por defecto al input. Abrimos el archivo y lo editamos para que quede así:


Esto es un primer comentario</echo>
¿Te ha gustado?
Tu respuesta es '${like}'

Así que ya tenemos un valor por defecto. Si lo ejecutas, verás que aparece entre corchetes el texto que hemos indicado.  Pero en realidad queremos que el usuario sólo pueda escoger entre dos opciones: Sí o No. ¿Podemos? Sí, y resulta bastante fácil. Sólo hay que añadir lo siguiente:


Esto es un primer comentario</echo>
¿Te ha gustado?
Tu respuesta es '${like}'

Si el usuario ahora intenta introducir un valor distinto a los dos indicados, no podrá seguir. Si deja el valor vacío, se asumirá el valor por defecto (Sí).

Es probable que con estas dos opciones ya empieces a ver cómo se simplifican ciertas tareas. En este caso es la validación de la introducción de datos. Pero hay más, en ejemplos posteriores lo iremos viendo.


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.