CakePOWER: DAC | Dinamic Access Configuration

La DAC è un semplice sistema di configurazione basato su di un array associativo ed una classe statica che ne gestisce le operazioni di lettura e scrittura (JC).

Il sistema di inizializzazione di CakePOWER costruisce due liste di files (tutti opzionali) il cui scopo è estendere e dettagliare questa configurazione. Essa verrà poi utilizzata dalle varie applicazioni per gestire il comportamento dell'applicazione stessa.

Il sistema carica la configurazione in questo ordine:

  • plugin/plugin_app_config.php - configurazione di ogni plugin elencato nel sistema
  • app/app_config.php - configurazione di applicazione

Ad esempio per il plugin “pizza” verrà cercato il file “APP/config/pizza_app_config.php”.

CONFIGURAZIONE DI LINGUA: Ogni file di configurazione può essere versionato utilizzando il flag di lingua richiesta. Nel caso il sistema venga richiesto con il flag di lingua it il precedente esempio di configurazione diviene “APP/locale/it/config/pizza_app_config.php”. La ricerca ed utilizzo del file di lingua avviene solo se la richiesta in corso si riferisce ad una lingua in particolare e avviene dopo il caricamento del file di base (privo di specifiche di lingua).

Valori di Default

Oltre ad estendere una configurazione CakePOWER consente anche di utilizzare dei file di “defaults” per i plugins. Un file di default contiene una o più istruzioni di configurazione che vengono applicate “in assenza di precedenti specifiche”.

Questo sistema aiuta lo sviluppatore nel realizzare codice funzionante a priscindere da una configurazione specifica che diventa così sempre opzionale.

Ogni plugin può definire il file “app_default.php” che contiene le istruzioni di default per il plugin stesso. La gestione di lingua per i files di default è simile a quella già affrontata per i files di configurazione.

Configurazione da Registro di Sistema

Prima di applicare i valori di default il sistema cerca degli altri files di configurazione che ogni plugin può definire: ”/plugin_name/dac_config.php”.

Questo file può esporre delle configurazioni DAC che influenzeranno la ricerca di configurazione dinamica su database. Tale servizio è utile per permettere ad ogni plugin di costruire interfacce di configurazione a livello di applicazione e poterle portare all'interno della DAC durante l'inizializzazione del sistema.

Le istruzioni di ricerca configurazione sono del tipo:

JC::append('dac.register','name=config_name&area=plugin_name');

Il nome della chiave di registro utilizzata è importante perchè è proprio all'interno di questa chiave che vengono cercate le regole di estensione della configurazione stessa.

Nome e Area sono invece delle regole “consigliate” in quanto è possibile assegnare liberamente questi parametri nel momento in cui il plugin definisce l'interfaccia.

E' importante sapere che se la chiamata coinvolge una lingua verrà cercata sia la configurazione generale che la configurazione specifica di lingua.

Struttura di configurazione

  • app ⇒ Configurazione dell'applicazione
    • info ⇒ Informazioni sull'applicazione
    • plugins ⇒ Informazioni raccolte sui plugins istallati
    • urls ⇒ Gestione delle url notevoli gestite dal sistema per il rendering dei metodi (components:pow:url())
  • prj ⇒ Configurazione del progetto.
  • lang ⇒ Contiene informazioni legate alla lingua richiesta.
    • var ⇒ Parametro di lingua richiesto.
  • dac ⇒ Informazioni sul processo di caricamento della DAC
    • configs ⇒ Files di configurazione richiesti
    • register ⇒ Chiavi di registro di sistema richieste
    • default ⇒ Files di default richiesti
  • tmp ⇒ Contenitore di informazioni volatili destinate a modifiche durante la richiesta
  • controller ⇒ Ospita l'albero delle definizioni basate sul nome del controller per gestire l'overriding della configurazione generale.

Processo di costruzione della DAC

File di Configurazione

La configurazione DAC viene creata cercando e caricando più files contenenti istruzioni di configurazione:

  • Configurazione generale CakePOWER
  • Configurazione di ogni plugin installato nel sistema
  • Configurazione generica di applicazione (APP/app_config.php)

La medesima lista di configurazione viene cercata anche per la lingua in corso aggiungendo al file cercato il codice di lingua (Es. app_config_it.php).

Configurazione dinamica da Registro di Sistema

Dopo la lettura delle configurazioni statiche (da file) vengono ricercate una o più configurazioni definite nel registro di sistema. L'estensione di queste chiavi di lettura può essere realizzata a livello di plugin creando il file “plugin_dac_config.php” con istruzioni simili a:

JC::append('dac.register', 'name=reg_name&area=&reg_area');

Le varie chiavi di registro elencate verranno lette ed interpretate come codice di configurazione. Come per i files di configurazione ogni chiave verrà cercata sia a livello generico che contestualizzata nella lingua richiesta.

Valori di Default

[TODO] vengono ricercati i files con definizioni di default seguendo le precedenti regole di naming.

DAC: app

La chiave di configurazione “app” è particolare e può essere utilizzata per gestire delle modifiche alla configurazione contestualizzate al controller o alla dupla controller::azione.

// Questa istruzione definisce il valore "name=marco" per tutta l'applicazione.
JC::write('app.name', 'marco' );
 
// Modifico questa configurazione per un preciso controller.
// In tutta l'applicazione eccetto che per il controller users //name=marco//.
JC::write('ctr.users.name', 'giovanni' );
 
// Affino la definizione all'azione //add// del suddetto controller:
JC::write('ctr.users.add.name', 'luca' );

NOTA: Le configurazioni per controller e controller::azione sovrascrivono le configurazioni a livello di applicazione.

 
/home/juniorcm/public_html/wiki/data/pages/cakepower/dac.txt · Ultima modifica: 27/08/2009 18:38 da peg
 
Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è sotto la seguente licenza:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki