10

Eventuali duplicati:
How could read application.ini on controller using zend frameworkCome recuperare i parametri dal file Zend application.ini durante la sessione?

application.ini è un file di configurazione in ZF. Ho alcune impostazioni in più rispetto alle impostazioni predefinite di ZF. Ad esempio, come posso recuperare questi parametri dai miei controller di azione? E dove è meglio memorizzare questa configurazione durante la sessione?

La classe Bootstrap_Abstract ha getOptions() metodo che restituisce un semplice array PHP di leggere file di application.ini:

$app = new Zend_Application(APPLICATION_ENV, '/application.ini'); 
$config = $app->bootstrap()->getOptions(); // $config is a php array of application.ini 

E mi piacerebbe avere elemento formarlo oop-style:

$param = $config[one][two]; // vs. 
$param = $config->one->two; // like this 

ZF ha la classe Zend_Config_Ini che legge .ini e restituisce esattamente ArrayObject. Ma mi piacerebbe evitare di leggere application.ini con Zend_Config_Ini ancora una volta dopo che Zend_Application ha comunque già letto. Le classi Bootstrap o Zend_Application non forniscono alcuna creazione automatica di ArrayObject da application.ini.

E il secondo, dove posso memorizzare questo $ config, quindi? In Zend_Registry?

Zend_Registry::set('config', $config); 

E poi nel mio alcuni controller di azione che recuperare è:

$config = Zend_Registry::get('config'); // I retrieve config 
$param = $config->one->two;    // I retrieve parameter from it and use it 

ma sembra un po 'inefficiente: ho una copia del application.ini nel Bootstrap sotto forma di ordine solito php e uno copia dello stesso application.ini ma sotto forma di ArrayObject in Zend_Registry. E devo fare due passi per ottenere un parametro dalla mia configurazione. Come posso risolvere questo problema in modo più efficiente?

+2

Vedere anche http://akrabat.com/zend-framework/accessing-your-configuration-data-in-application-ini/ – Phil

risposta

24

Utilizzando Zend_Controller_Front, è possibile recuperare le informazioni da application.ini da qualsiasi punto dell'applicazione (controller, plug-in, modelli, ecc) utilizzando il codice come questo:

$config = Zend_Controller_Front::getInstance()->getParam('bootstrap'); 

Say a application.ini hai avuto alcune opzioni come questo:

apikeys.google.maps.id = "abc" 
apikeys.google.maps.key = "123456789" 
apikeys.twitter.oauth = "20jg9032jg9320gj30" 

È quindi possibile accedere a tali valori utilizzando il sopra $config variabile:

$apikeys = $config->getOption('apikeys'); 
$mapsId = $apikeys['google']['maps']['id']; // abc 
$maksKey = $apikeys['google']['maps']['key']; // 123456789 
$twitKey = $apikeys['twitter']['oauth'];  // 20jg9032jg9320gj30 

Spero che questo aiuti.

+0

+1, bella spiegazione – SagarPPanchal

Problemi correlati