Mostrar colores en command line (Console – Symfony2)

Desde hace algún tiempo que utilizo el component Console de Symfony2 para crear mis propios comandos en las aplicaciones Symfony2 o en solitario para otros proyectos. Una de las ventajas, es su formato colorado en pantalla, que permite distinguir de un vistazo cuando ha fallado algo o si todo ha sido correcto.

Este coloreado resulta de aplicar unos estilos predeterminados (podemos generar los nuestros propios si lo necesitamos), pero para que esto funciones es necesario tener instalados algunos paquetes. En Linux haremos uso de php-process, mientras que en Mac debemos utilizar php-posfix.

Disponible PHP 5.5.10 y 5.4.26

El grupo de desarrolladores de PHP han anunciado la disponibilidad de las versiones 5.5.10 (listado de cambios) y 5.4.26 (listado de cambios). Como es habitual se recomienda a todos los usuarios actualizar a estas últimas versiones, están disponibles a través de la página de descarga.

También está disponible la versión de desarrollo 5.6.0alpha3, con los avances de la nueva versión.

Frameworks PHP: Zend vs Symfony

Cuando uno se plantea por primera vez el uso de un framework en PHP comienza a darle vueltas a las posibilidades que ofrecen unos y otros. Aunque la curva de aprendizaje en el uso de un framework es dura, todo el tiempo que le dediquemos a conocer a fondo aquel por el que nos decidamos será el tiempo mejor invertido en formarnos como desarrolladores.

En este caso quiero plantear una comparación entre dos de los frameworks más extendidos Zend y Symfony.

Documentación y aprendizaje. Com he dicho la curva de aprendizaje para poder usar correctamente y con soltura un framework necesita de un esfuerzo, mucho más si llevamos años programando sin usarlo. Symfony dispone de guias y manuales en abundancia, y además cuenta con numerosos foros en varios idiomas donde la comundad va resolviendo dudas. En el caso de Zend, a pesar de ser el framework de la empresa que está detrás de PHP, la comunidad es algo escasa, por tanto su documentación también.

Pruebas unitarias. Symfony dispone de tareas por linea de comandos para realizar testing, y además genera una clase vacia con cada nuevo controdalor desde el que poder realizar las pruebas. Zend no dispone de esta funcionalidad, algo que me parece muy importante a la hora de lanzar una aplicación a un entorno de producción.

Plantillas y plugins. Al sistema de plantillas de Zend le queda todavía un largo camino que recorer, mientras que en Symfony el sistema está ya muy avanzado, con la posibilidad de agragar módulos. Y otro tanto ocurre con los plugins, en Symfony es posible aumentar sus funcionalidades a base de plugins, mientras que Zend carece de esta característica.

Bases de datos. El trabajo con base de datos en Zend se limita a usar ActiveRecord (que no digo que esté mal), pero en Symfony tienes la posibilidad de usar el motor de base de datos que quieras, incluyendo el propio Zend_Db, algo que aporta una enorme flexibilidad al desarrollador que puede elegir en cada proyecto cual es la mejor opción.

Como conclusión a lo dicho quiero añadir, para todos aquellos que quieran dar el salto a hacer desarrollos basados en un framework, que a pesar de que al principio pueda resultar un poco engorroso con el tiempo os ayudará a mantener una limpieza de código y un mantenimiento de aplicaciones mucho más sencillo.

Todo controlado con xDebug

xdebug-logoHay algo que considero fundamental para todo programador: un depurador. Si desarrollas con PHP debes conocer xDebug, este depurador te permitirá hacer un control exhaustivo de los errores que se produzcan en nuestra aplicación.

Tienes toda la información relativa a la descarga e instalación en la página oficial de xDebug. Una vez instalado recuerda indicarle a PHP, en el php.ini, la ruta donde se encuentra el paquete. También debes tener habilitado PHP para mostrar errores mediante la directiva display_errors.

Algunas funciones útiles:

xdebug_memory_usage( ): Devuelve la cantidad de memoria usada por nuestro script. Antes de PHP 5.2.1, esta función sólo funcinará si PHP fue complilado con –enable-memory-limit.

xdebug_time_index(): Devuelve el tiempo en segundos que ha tardado en ejecutarse el script.

xdebug_peak_memory_usage(): Devuelve el pico máximo de memoria usuado por el script.

Otra de las características más salientables de xDebug es la integración con IDE’s, entre ellos Eclipse y Netbeans, lo que permite la depuración de las aplicaciones sin salir del entorno de trabajo.

La instalación de xDebug debe estar reservada únicamente al servidor de desarrollo, puesto que la cantidad de información que muestra xDebug puede ser utilizada por un atacante para encontrar puntos de ataque.

Preparando la Certificación de PHP

Desde hace unos meses estoy preparando la certificación de PHP, y ahora que se acerca el examen, me he propuesto dedicarle más horas. A cada nuevo capí­tulo que avanzo sobre el temario me doy cuenta de una cosa, para aprobar la certificación hay que saber las cosas al dedillo, no basta con saber programar.

Para los que no sepais de que va la Zend Certified Engineer (ZCE), podeis echar un vistazo en la página oficial de Zend. El examen consta de 70 preguntas y tienes 90 minutos para responderlas. Según me han comentado hace falta el tiempo, es mejor no pararse demasiado a pensar si no sabes la respuesta. Haciendo numeros sale a poco más de 1 minuto 28 segundos por pregunta.

El temario consta de 12 bloques temáticos: PHP Básico, Funciones, Arrays, Programación Orientada a Objetos, Seguridad, XML y Servicios Web, Cadenas y Modelos, Bases de Datos y SQL, Caracteristicas Web, Diferencias entre PHP4 y PHP5, Clases y Diseño y Teoria de Programación.

No se si el examen será tan duro como lo pinta el temario, pero desde luego pinta muy negro. Por mi parte pienso dedicarle bastantes horas estas dos semanas a prepararlo, después de pagar las taxas del examen no tengo ganas de suspender.