Incrustar Efectos Prototype en los atributos de un enlace

En zenphp gracias a la macro zen_ajax.js podemos añadir efectos simplemente con un atributo, el resto es automático.
Para ello ponemos nuestro enlace como es normal con
<a href=”/direccion_al_script_ajax.php/” ajax=”1″ animacion_carga=”slideDown” animacion_descarga=”slideUp” division=”contenido”>Enlace AJAX</a>

Y lo que hará el motor será , convertir el enlace en un enlace ajax que se cargará por el método POST en segundo plano mientras se aplica el efecto de “correr hacia arriba” la división “contenido” ,al recuperar el contenido del fichero php del enlace se coloca dentro de la misma división y se aplica el efecto de “correr hacia abajo” mostrándose 😉

Efectos disponibles: highlight, fade, grow, shrink, fold, blindUp, blindDown, slideUp, slideDown, pulsate, shake, puff, squish, switchOff.

Extendiendo POA a AJAX : El zen de zen_ajax

¿Programación Orientada a Aspectos sobre AJAX?
Propongo la siguiente metáfora: en un sistema AJAX las peticiones son como en una bici los piñones…si me monto en la bicicleta y le doy a los pedales pero no anda es que hay un piñón que hace que se salga la cadena, se trata de encontrar ese pequeño piñón o piñones que no están bien metidos en la cadena para que podamos disfrutar del paseo.
El AJAX de zenphp utiliza mecanismos para que se pueda asociar partes de un fichero HTML a llamadas AJAX y, de forma automática los eventos “onclick” de los enlaces <a> serán reemplazados por la llamada AJAX de Prototype, que por cierto, usa una versión muy ligera con todo lo necesario para que sea más eficiente.

Trae una gestión de detección de errores que hace que si no se puede mostrar una web con javascript o el navegador no soporta AJAX se carga el enlace normal.

Una captura de zen_ajax en funcionamiento:

Poco a poco, automáticamente, instantáneamente…

La importancia del profiler en PHP

Sin duda, las herramientas “IDE” o entornos visuales para la edición de código fuente aumentan muchísimo la producción.
Hoy en día es muy necesario que dicha aplicación disponga de una interfaz amigable y de herramientas super importantes a la hora de la verdad, creando un proyecto si no sabemos qué está pasando con nuestro código,no sabremos si hace lo que se espera de él cuando lo escribimos y previamente diseñamos…

Así pues, es imprescindible disponer de un profiler que nos informe por qué y qué es lo que hace que nuestra aplicación vaya demasiado lenta o se cuelgue; e incluso nos ayuda a depurar todo el proyecto de una forma a simple vista sencilla.

En el ejemplo podemos ver que el compilador lleva mucho tiempo en ejecutar la línea 29 de la clase que añade el contenido especificado en nuestro XML de aspectos a un fichero .PHP. Si leemos la línea veremos que lo que se hace es una llamada a implode : construir una cadena a partir de un array de contenidos. Es bien sabido que éste lenguaje es muy ineficiente cuando se trata de operar con cadenas, sobre todo en las concatenaciones…
El resto de llamadas ineficientes son básicamente la lectura de ficheros,por lo que ya sabemos que debemos intentar realizar el menor número de accesos a disco, éstos son, llamadas a require(), require_once(), include_once(), readfile(), virtual()include_path, fopen, etc…Ahora deben ser precedidas por funciones de comprobación de existencia de funciones,clases y ficheros… 😉

Por lo tanto ya sabemos donde tenemos que centrar nuestra atención a la hora de optimizar el código. 🙂

Tomando control de PHP

Poco a poco zenphp va tomando el control de las operaciones que PHP hace, automáticamente,instantáneamente…

Al principio fueron sólo las sesiones,los ficheros de logs y los errores, ahora se añaden los búferes de salida, todos los tipos de bases de datos,las redirecciones de URL, las funciones de correo, el procesamiento con filtros de entrada/salida y la configuración con ficheros .ini

El tenerlo todo controlado y funcionando ,mejor que el funcionamiento por defecto de PHP es lo que hace que un framework sea rentable de utilizar, no sólo por la facilidad para construir una aplicación compleja sino porque es mucho más rápido trabajar con un sdk que esté bien diseñado y sea rápido de entender gracias a la simplicidad de la jerarquía.