jueves, 5 de enero de 2012

SILEX - PHP micro-framework basado en Symfony2

Como Symfony es complejo y el proceso de aprendizaje no tan rápido como uno quisiera, SensioLabs nos ofrece SILEX como alternativa. No lo he probado todavía, pero es como un mini-Symfony y posiblemente para el desarrollo de muchas aplicaciones sea más que suficiente.

Habrá que aprovechar y ver también que es Pimple, una mini-herramienta utilizada por SILEX.

jueves, 15 de septiembre de 2011

Problemas con wsdl2phpgenerator

Al utilizar por primera vez wsdl2phpgenerator me he encontrado con que se producía el siguiente error:

Fatal error: Call to undefined function _() in generate.php on line 42

Pues bien, para resolverlo hay que instalar la extensión Gettext (+info) de php. El procedimiento es el habitual: en el php.ini hay que activar la línea extension=php_gettext.dll.

miércoles, 13 de abril de 2011

Espacios de nombres en PHP (PHP Namespaces)

Además del dominio de la programación orientada a objetos y del uso de los arrays asociativos, hay otro elemento que es importante dominar para entender el código de Symfony2. Se trata de los espacios de nombres.

Hay una fantástica explicación  del concepto de espacio de nombres en esta página

Y el manual "oficial" en español se encuentra en http://php.net/manual/es/language.namespaces.php.

Algunos pequeños detalles a destacar:
  • Para entender el uso de "use" hay que tener presente que, tal y como se indica en la documentación, los espacios de nombres de PHP soportan dos formas de usar alias o importar: apodar un NOMBRE DE CLASE, y apodar un NOMBRE DE ESPACIO DE NOMBRES. Observe que importar una función o una constante NO ESTÁ SOPORTADO. He destacado algunas partes del texto en mayúsculas pues he "tropezado" con esto a la hora de entender la lógica de utilización de "use".

miércoles, 6 de abril de 2011

Instalación de APC (Alternative PHP Cache)

APC acelera el funcionamiento de PHP y su uso está altamente recomendado por Symfony.

Hay un completo manual en español en esta página: http://php.net/manual/es/book.apc.php y, en esta otra:  http://docs.moodle.org/en/Installing_APC_in_Windows están detallados (en inglés) los pasos a seguir para llevar a cabo la instalación.

Yo, finalmente, me he limitado a descargar desde http://downloads.php.net/pierre/ el fichero php_apc-3.1-svn20101116-5.3-vc6-x86.zip. Una vez descomprimido, he instalado el fichero php_apc.dll en la carpeta de extensiones de PHP (en mi caso C:\PHP\ext) y he editado php.ini añadiendo extension=php_apc.dll en el apartado "Windows Extensions". El fichero php_apc.pdb también contenido en el ZIP lo he ignorado, ya que desconozco su función.

He rearrancado Apache y verificado que aparece el bloque APC en el consultando un pfpinfo().

Si se instala una versión no adecuada de APC, Windows da directamente un error al intentar arrancar Apache. Esto me ha pasado probando con otros ficheros de http://downloads.php.net/pierre/ que, obviamente, no eran los correctos. Por si sirve de ayuda, el instalador de PHP que utilicé en su momento fue php-5.3.4-Win32-VC6-x86.msi.

jueves, 31 de marzo de 2011

Un proyecto, múltiples dominios con Symfony

En el momento de escribir esta entrada sigo sin haberme "sumergido" realmente en Symfony2. He estado aprendiendo a manejar herramientas (xDebug, NetBeans, Twig, etc) para mejorar mi entorno de trabajo, y conocer recursos utilizados habitualmente en Symfony. Todo para intentar abordar el famoso framework con la mejor preparación posible.

De todas formas, antes de seguir adelante he querido echar un vistazo a la posibilidad de, con un único proyecto de Symfony, gestionar el contenido de varios dominios. De hecho es uno de mis objetivos más importantes. Por lo pronto he encontrado dos enlaces que, aunque no son de Symfony2 sino de su predecesor, quiero "guardar" en esta entrada para analizarlos con calma en cuanto pueda.

http://www.programania.net/diseno-de-software/un-proyecto-multiples-dominios-con-symfony-1-4-y-propel-1-5/

http://mirmodynamics.com/post/2008/12/22/Multiple-domains-for-one-symfony-project,-the-basics

Espero poder comentarlos en breve...

sábado, 19 de marzo de 2011

Configurar Xdebug en NetBeans

Si ya hemos instalado Xdebug en nuestro PHP (más información aquí) seguramente nos faltará un paso para utilizarlo de forma integrada en NetBeans. Para comprobarlo basta con acceder a la opción "Depurar"->"Debug Proyect" con un proyecto PHP abierto tal y como se muestra a continuación:


Si no tenemos Xdebug configurado para trabajar desde NetBeans, en la parte inferior derecha aparecerá una barra de progreso como la siguiente:


Que permanecerá durante mucho tiempo moviéndose sin ningún resultado. Mejor interrumpirlo con el botón que aparece a la derecha de la barra. Entonces, nos aparecerán indicaciones sobre los pasos que tenemos que seguir. Se trata de un mensaje como este:


Así que, en definitiva, lo que tenemos que hacer es añadir a nuestro php.ini las siguientes líneas:

xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost (o la ip del servidor Web)
xdebug.remote_port=9000

Luego, como siempre que hacemos cambios en el php.ini hay que reiniciar Apache para que la nueva configuración surta efecto.

Pequeño contratiempo
Una vez hecho todo lo anterior, al iniciar de nuevo la depuración desde NetBeans me he encontrado con un mensaje como el siguiente:


Para solucionarlo he dicho que sí y he indicado el puerto 9001 en el campo "Debugger Port" de la ventana que se abre y a la que también se puede acceder desde "Herramientas"->"Opciones"->"PHP".


Luego he hecho  lo mismo en el php.ini (xdebug.remote_port=9001) y he reiniciado Apache. Ahora ya todo funciona a la perfección.

En esta página hay documentación detallada y oficial de NetBeans sobre cómo configurar Xdebug.

¿Qué es Xdebug?

Xdebug es una extensión para PHP que proporciona un soporte muy completo para la depuración de nuestros scripts. Enumeramos continuación sus características principales:
  • Añade características avanzadas en el volcado del valor de las variables, al sobreescribir la función de PHP var_dump().
  • Las trazas de error incluyen información personalizable, y son lanzadas automáticamente cuando PHP genera un mensaje a nivel de warning, error o info.
  • Permite hacer trazas personalizables de funciones: invocaciones, valor y tipos de parámetros y valores de retorno.
  • Incluye un analizador de cobertura de código. No sólo es útil para posibles detecciones de código inaccesible sino también para conocer el alcance de nuestros test unitarios.
  • Hacer análisis de rendimiento. Detectar cuellos de botella, tiempos muertos, carga de recursos y en general, el comportamiento de nuestros script PHP con la información manejada en tiempo de ejecución. La información generada por el profiles puede ser posteriormente analizada visualmente con las aplicaciones opensource y GPL KCacheGrind (linux+KDE), o WinCacheGrind (Windows).
  • Añade la posibilidad de depuración a cualquier cliente que sea capaz de ejecutar scripts PHP y soporte el protocolo DBGp. Esto es, ofrece características de depuración remota para Eclipse PDT, NetBeans, Notepad++, Protoeditor, Komodo... ¡e incluso vim!!
  • Xdebug incluye un cliente de depuración standalone y opensource: Xdebugclient 0.9.0
Este resumen lo he tomado de esta página.