NamedEvents è una tecnica di sviluppo che aiuta nella realizzazione di applicazioni scalabili permettendo la definizione di punti di inclusione di codice esterno nelle proprie applicazioni.
Nei controllers NamedEvents è utilizzato mediante Component::Pow::event() e permette di richiamare funzioni di callback definite in AppController o AppComponent e gestire un elenco di namedActions in risposta all'invio di una form.
$this->Pow->event('myEvent');
myEvent è una chiave dell'array DAC app.namedEvents e contiene la configurazione necessaria all'evento per essere correttamente eseguito.
La configurazione dell'evento (un parametro opzionale aggiuntivo) è un array associativo che contiene informazioni utili quali callback da invocare, azioni da gestire e variabili su cui poter lavorare. Questo array viene esteso dalla DAC.
.. if ( $this->Model->save($this->data) ) { $id = $this->Model->getLastInsertId(); $this->Pow->event('afterSave',array( 'vars' => array( 'id' => &$id ) )); }
Il precedente esempio dimostra come lanciare un evento passando inoltre una variabile per riferimento. Le callback dell'evento riceveranno tali variabili e potranno leggerle e modificarle interagendo così in modo profondo con l'applicazione.
Nelle viste l'esigenza è poter estendere delle interfacce. In questo senso il metodo Helper::Pow::point() permette di definire dei punti di inserimento per personalizzazioni dell'interfaccia.
<?php $pow->point('myPoint'); ?>
Il metodo point() permette di includere un elenco di elements e di effettuare delle requestAction. Il tutto è ovviamente inframmezzato con la possibilità di eseguire delle callback definite in AppHelper.
Il flow di questo hook è:
Un esempio di configurazione di myPoint potrebbe essere:
JC::extend('app.points.myPoint',array( 'beforeElements' => array( '>>foo', '>>foo1' ), 'elemens' => array( 'element1', 'element2' ), 'beforeActions' => array( '>>foo3' ), 'actions' => array( '/users/index/' ), 'afterActions' => array( '>>foo4', '>>foo5' ), ));