Programación orientada a eventos

La herramienta principal que nos ofrece WordPress para construir nuestras propias extensiones es un conjunto de funciones al que comúnmente se llama Plugin API, un sistema basado en el paradigma de **Programación Orientada a Eventos**, o Programación Basada en Eventos (en inglés, Event-oriented programming o Event-driven programming). Es combinable con otros paradigmas populares, como el estructurado, el orientado a objetos y el funcional, y tiene unos conceptos fundamentales muy sencillos.

Este paradigma es extremadamente útil cuando necesitamos que un proceso se ejecute en algún punto determinado, pero tenemos un acceso limitado al código que se encuentra en ese punto; o cuando queremos modificar un proceso sin cambiar el código original. Es particularmente útil a la hora de extender WordPress, porque no podemos modificar libremente su código sin perder lo que hayamos hecho en futuras actualizaciones.

El paradigma de eventos dicta que, en ciertos lugares puntuales de nuestro programa, van a ocurrir determinados eventos o "sucesos" importantes, los cuales el desarrollador original debe identificar de cierta manera particular. Estos eventos, por sí mismos, no hacen nada; su función original es meramente descriptiva. Solamente van a empezar a tener algún efecto sobre el programa cuando les asignemos procesos, es decir cuando indiquemos que al ocurrir un determinado evento tiene que ejecutarse un proceso determinado.

Normalmente, vamos a tener en alguna parte de nuestro código la ejecución de un evento con un nombre dado. Supongamos que tenemos un evento llamado mesa_servida, el cual podría verse de esta forma:

<?php
evento( 'mesa_servida' );

Por otra parte, vamos a necesitar que, al ocurrir ese evento, también se ejecute un proceso. Vamos a suponer que, al ocurrir el evento mesa_servida, queremos que se procese la función sentarse_a_comer(). Para eso, necesitamos que la función haya sido declarada antes de que ocurra el evento.

<?php
function sentarse_a_comer() {
    echo 'a comer!';
}

evento( 'mesa_servida' );

Sin embargo, ese código por sí mismo todavía no cumple con nuestro propósito. Para que la función se procese en el momento en el que se ejecuta el evento, necesitamos asignar la función al evento.

<?php
function sentarse_a_comer() {
    echo 'a comer!';
}

asignar_proceso( 'mesa_servida', 'sentarse_a_comer' );

evento( 'mesa_servida' ); // Se imprime "a comer!"

De esta manera, al usar asignar_proceso() con el nombre del evento como primer parámetro y el nombre de la función como segundo parámetro, indicamos que, al ocurrir el evento mesa_servida, va a procesarse el código declarado dentro de la función sentarse_a_comer. La función asignada a un evento es lo que dentro de este paradigma se suele llamar hook.

El importante notar que, al menos en PHP, no es necesario que la función exista antes de asignarla a un evento, pero sí tiene que haber sido declarada antes de que el evento ocurra. La misma asignación también tiene que hacerse antes de que ocurra el evento. De esta manera, el siguiente código es equivalente al anterior:

<?php
asignar_proceso( 'mesa_servida', 'sentarse_a_comer' );

function sentarse_a_comer() {
    echo 'a comer!';
}

evento( 'mesa_servida' );

Conociendo los conceptos fundamentales de la programación orientada a eventos, podemos ver de qué manera se puede aplicar en WordPress para construir nuestros propios plugins usando los dos tipos de eventos que nos ofrece: acciones y filtros.

results matching ""

    No results matching ""