Proseguiamo lo studio di Zend Framework analizzando le diverse tecniche possibili per accedere ai dati di configurazione contenuti nel file application.ini . L’ application.ini è il file responsabile della configurazione della web application: in questo file sono contenute informazioni sensibili, come ad esempio le credenziali della base di dati, i percorsi delle directory principali, e molto altro ancora. Il file ha una struttura gerarchica che permette di utilizzare contemporaneamente più configurazioni diverse (es. “produzione”, “testing”, “develop”).
Nonostante Zend Framework preveda dei meccanismi interni molto comodi e funzionali per l’utilizzo dei dati di configurazione, in alcuni casi può essere necessario recuperare direttamente dal file application.ini alcuni valori utili alla web application.
Come possiamo procedere?
In realtà ci sono diversi modi di ottenere queste informazioni, a seconda di cosa vogliamo implementare e del luogo in cui dobbiamo rendere disponibili tali informazioni. Il seguente codice ad esempio:
$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
$options = $bootstrap->getOptions();
permette di recuperare in ogni punto della web application le informazioni di configurazione dell’ application.ini : ovviamente bisogna fare molta attenzione a come si gestisce questo “potere”, per evitare falle di sicurezza. In questo caso accediamo all’istanza del Front Controller, e recuperiamo l’oggetto bootstrap istanziato quando si avvia l’applicazione. Dall’oggetto bootstrap possiamo poi leggere le option, che verranno restituite sotto forma di array con il metodo getOptions().
Se invece abbiamo bisogno delle informazioni di configurazioni in un controller, possiamo utilizzare il seguente codice:
public function azioneAction() {
//[...]
$bootstrap = $this->getInvokeArg('bootstrap');
$options = $bootstrap->getOptions();
//[...]
}
In questo caso utilizziamo il metodo “getInvokeArg()” dell’oggetto controller: questo metodo tiene traccia della stato del Front Controller prima del dispatch, cioè prima che la richiesta sia processata, dunque tiene traccia anche della configurazione del sistema.
L’ultima possibilità che vediamo in questo tutorial è utilizzare l’oggetto Zend_Config insieme allo Zend_Registry :
protected function _initConfig() {
$config = new Zend_Config($this->getOptions());
Zend_Registry::set('config', $config);
return $config;
}
Inserendo questo codice nel file di bootstrap principale della web application, e memorizzando il contenuto dell’oggetto Zend_Config all’interno di una variabile del registro, sostanziamente rendiamo disponibile l’oggetto “config” ovunque nell’applicazione. Sarà infatti sufficiente recuperare dal registro il valore della variabile config :
$config = Zend_Registry::get('config');
Anche se non è consigliato abusare nell’utilizzo di Zend_Registry, questo può essere un utile strumento per la condivisioni delle informazioni di configurazione della web application.
Altri tutorial e articoli su Zend Framework sono disponibili al seguente indirizzo.