Skip to content
This repository has been archived by the owner on Oct 10, 2023. It is now read-only.

Gestor de eventos

Gabriel edited this page Feb 21, 2021 · 2 revisions

Documentación:


La clase del gestor de eventos permite a la aplicación (Foxtrot, por el momento, no emite ninguno, aunque podría hacerlo en el futuro) definir eventos globales y manejadores para los mismos, del lado del servidor.

Pueden crearse diferentes clases que extiendan \manejador y contengan diferentes métodos, uno por cada evento que se desee escuchar. Por ejemplo:

class miManejador extends \manejador {
    /**
     * Manejador del evento `productoCreado`.
     */
    public function productoCreado($id) {
        //Hacer algún proceso con el producto $id
    }
}

En algún punto, la aplicación debe suscribir o dar de alta el manejador mediante \eventos::suscribir(). Este método acepta una instancia del manejador.

class aplicacion extends \aplicacion {
    public function listo() {
        $manejador=new miManejador;
        \eventos::suscribir($manejador);
    }
}

Nota: No se recomienda hacerlo en el constructor.

Posteriormente, por ejemplo en un controlador, puede desencadenar un evento simplemente invocando un método de \eventos. El método del mismo nombre será invocado en todos los manejadores en los cuales esté definido, sin generar conflicto alguno con aquellos manejadores que no presenten el método. De esta forma, todos los eventos que genere la aplicación pueden centralizarse en forma segura en la clase \eventos. Ejemplo:

class productos extends \controlador {
    public function crear($campos) {
        //Alta del producto
        //...
        //...

        \eventos::productoCreado($id);
    }
}

Los manejedores serán invocados en orden de suscripción. Cualquiera de ellos puede detener la propagación devolviendo true.

Clone this wiki locally