WebFrameWorker

gennaio 5, 2007

Seagull: un maturo framework MVC

Filed under: PHP,seagull — stablum @ 3:23 pm

E’ già da un paio di mesi che mi sono interessato a seagull.
Si tratta di un framework basato sul pattern Model View Controller e permette di gestire in modo molto elegante concetti come: fitrare le richieste, costruzione dei dati di input sulla richiesta, passaggio dei dati di input alla “azione” del “manager” richiesto e quindi costruzione dei dati di output che vengono passati a un template.

Ecco un esempio di una classe “manager”:

class HelloWorldMgr extends SGL_Manager
{
  function validate($req, &$input){
    $this->validated = true;
    $input->action   = ($req->get('action')) ? $req->get('action') : 'sayGoodBye';
  }
  function HelloWorldMgr(){
    parent::SGL_Manager();
    $this->_aActionsMapping =  array(
      'sayGoodBye'   => array('sayGoodBye'),
      'sayHello'   => array('sayHello'),
    );
  }
  function display(&$output) {
    $this->masterTemplate = 'helloWorld.html';
    $this->pageTitle = "whoa";
    $output->fooz="include_path:".ini_get("include_path");
  }
  function _cmd_sayHello(&$input, &$output) {
    $output->word = 'Hello';
  }
  function _cmd_sayGoodBye(&$input, &$output) {
    $output->word = 'Goodbye';
  }
}

In sostanza la richiesta $reqviene mandata al metodo validate() che costruisce array $input.
Successivamente il framework analizza l’array $this->_aActionsMapping per capire quali metodi (con prefisso _cmd_) sono mappati all’azione richiesta.

Successivamente vengono eseguiti tutti i metodi mappati dando come argomenti l’array di input e quello di output (per riferimento, dato che i dati devono essere modificati).

L’array associativo di output contiene tutte le etichette che verranno macro-espanse nel template (che può essere di tipo flexy, smarty e altri ancora…).

Tale array di output viene passato infine al metodo display (una specie di post-filtro) che si occupa di effettuare le ultime operazioni sui dati che verranno visualizzati, come ad esempio settare il nome del file del template.

Inoltre è disponibile un sistema evoluto di gestione dei permessi, molti moduli gia’ fatti pronti per essere utilizzati e un interfaccia web molto comoda per la configurazione del framework e dei moduli.

Questo sistema di gestire le richieste è una vera e propria manna dal cielo e per le sue caratteristiche lo utilizzerò intensivamente nei mei progetti futuri e seguiranno molti post a proposito ;)

Lascia un commento »

Non c'è ancora nessun commento.

RSS feed dei commenti a questo articolo. TrackBack URI

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Theme: Rubric. Blog su WordPress.com.

Follow

Get every new post delivered to your Inbox.