PHING

February 24th, 2009 Leave a comment Go to comments

phing logo

Introducción

PHING (PHing Is Not GNU make), es una herramienta basada en el constructor (builder) de aplicaciones Java, Apache Ant, con la diferencia de que PHING es para construir aplicaciones escritas en PHP.

La estructura de la aplicación se describe en un archivo XML llamado build.xml, en este archivo podemos encontrar el nombre de la aplicación a construir, una descripción de la misma, la carpeta donde se encuentra nuestro código fuente, la carpeta de destino que contendrá la última versión de la aplicación y las tareas (tasks) que este debe ejecutar.

Esta herramienta es muy útil, por lo general, cuando se tiene una ruta  específica de un conjunto de librerías de utilidades que pueden formar parte de cualquier aplicación. Se puede hacer referencia a esta ruta desde su IDE de PHP, pero luego, tenie que asegurarse de copiarla cuando ya tiene su producto final.

También cuando se trabaja con diferentes configuraciones, ya sea el servidor de desarrollo o el de producción debe asegurarse de copiar y/o subir la configuración correcta, esto sin tomar en cuenta que la PC del programador pueda tener otra configuración. Este problema se resuelve con PHING, ya que a la hora de construir la aplicación solo basta con decirle que configuración debe cargar.

Enlace de descarga: http://phing.info/trac/wiki/Users/Download

Instalación y Documentación: http://phing.info/docs/guide/current/

Ejemplo del archivo build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project
	name="Proyecto de prueba"
	default="stage"
	basedir="."
	description="Archivo Build del Proyecto de Prueba">

	<!--  Ruta que contendra la aplicacion web final -->
	<property name="build.dir" value="../build" />

	<!-- Ruta de los archivos fuentes -->
	<property name="src.dir" value="./app" />

	<!--
	PHP COMMONS LIBS - PCL
	Configuracion de la libreria de utilidades comunes

	pcl.src.dir:
	Es la ruta donde se encuentra los archivos fuente de PCL

	pcl.out.dir:
	Es la ruta donde se copiara las utiliades dentro de la aplicacion
	-->
	<property name="pcl.src.dir" value="../PCL" />
	<property name="pcl.out.dir" value="${build.dir}/libs/PCL" />

	<!-- Incluye los archivos fuente de la aplicacion -->
	<fileset dir="${src.dir}" id="srcfiles">
		<include name="**" />
	</fileset>

	<!--
	- Incluye los archivos del proyecto PCL
	- Excluye archivos de Zend Studio for Eclipse (ZSE) - opcional
	-->
	<fileset dir="${pcl.src.dir}" id="pclfiles">
		<include name="**" />
		<exclude name=".cache/**" />
		<exclude name=".settings/**" />
		<exclude name=".project" />
	</fileset>

	<!-- Prepara el directorio de destino -->
	<target
		name="init"
		description="Preparando el directorio destino ==> ${build.dir}">

		<echo message="Preparando el directorio ${build.dir}" />
		<delete dir="${build.dir}" failonerror="true" />
		<mkdir dir="${build.dir}" />
		<mkdir dir="${build.dir}/libs"/>
		<!--
		Crea el directorio de destino de PCL
		-->
		<mkdir dir="${pcl.out.dir}" />
	</target>

	<!-- Construye la aplicacion WEB PHP -->
	<target
		name="build"
		depends="init"
		description="Construye la aplicacion WEB">

		<!--
		Copia los archivos fuentes de la aplicacion
		-->
		<echo message="Copiando archivos desde ${src.dir}" />
		<copy todir="${build.dir}">
			<fileset refid="srcfiles" />
		</copy>

		<!--
		Copia los archivos de configuracion de la aplicacion
		-->
		<echo message="Copiando configuracion desde ${config.dir}" />
		<copy todir="${build.dir}">
			<fileset dir="${config.dir}">
				<include name="**" />
			</fileset>
		</copy>

		<!--
		Copia los archivos de PCL dentro de la carpeta de destino
		-->
		<echo message="Copiando archivos PCL desde ${pcl.src.dir}" />
		<copy todir="${pcl.out.dir}">
			<fileset refid="pclfiles" />
		</copy>
	</target>

	<!-- Carga la configuracion del servidor de desarrollo de la aplicación -->
	<target
		name="stage"
		description="Construir con la configuracion de desarrollo">

		<!--
		Llamado a build con la configuracion de desarrollo
		-->
		<phingcall target="build">
			<property name="config.dir" value="./config/stage" />
		</phingcall>

		<echo message="-----------------------------------" />
		<echo message="  APLICACION CONSTRUIDA CON EXITO  " />
		<echo message="CONFIGURACION DE DESARROLLO CARGADA" />
		<echo message="-----------------------------------" />
	</target>

	<!-- Carga la configuración del servidor de produccion de la aplicacion -->
	<target
		name="production"
		description="Construir con la configuracion de produccion">

		<!--
		Llamado a phing con la configuracion de produccion
		-->
		<phingcall target="build">
			<property name="config.dir" value="./config/production" />
		</phingcall>

		<echo message="-----------------------------------" />
		<echo message="  APLICACION CONSTRUIDA CON EXITO  " />
		<echo message="CONFIGURACION DE PRODUCCION CARGADA" />
		<echo message="-----------------------------------" />
	</target>
</project>

Para construir la aplicación con este archivo, nos vamos por linea de comandos hasta la ruta donde se encuentra nuestro proyecto y ejecutamos:

Carga la configuración stage por defecto

{RUTA_DEL_PROYECTO}> phing

Carga la configuración de produccion

{RUTA_DEL_PROYECTO}> phing production

Integracion del PHING con ZSE

Podemos crear un proyecto en el ZSE que contenga nuestro archivo build.xml y ejecutar el PHING desde el ZSE para construir nuestro proyecto.

Para esto nos vamos al menú Project -> Properties -> Builders -> New... -> Program -> OK

Name: Phing

Location: {RUTA_DE_INSTALACIÓN_DEL_PHING}

Working Directory: {RUTA_DEL_PROYECTO}

Arguments: Aqui se puede colocar que configuración se desea cargar, por defecto toma stage (desarrollo)

phing and zse
Términos de búsqueda
Compartir:

  • email
  • Twitter
  • Digg
  • del.icio.us
  • MySpace
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Live
  • Meneame
  • Yahoo! Bookmarks
  • LinkedIn
  • StumbleUpon
  1. No comments yet.
  1. No trackbacks yet.