10

Possible en double:
How could read application.ini on controller using zend frameworkComment récupérer les paramètres du fichier Zend application.ini pendant la session?

application.ini est un fichier de configuration dans ZF. J'ai là plus de paramètres que les valeurs par défaut que le manuel de ZF écrit. Mais comment puis-je récupérer ces paramètres de mes contrôleurs d'action par exemple? Et où est-il préférable de stocker cette configuration pendant la session?

La classe Bootstrap_Abstract a méthode getOptions() qui retourne un tableau simple php de lire le fichier application.ini:

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

Je voudrais obtenir l'élément le former oop style:

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

ZF a Zend_Config_Ini classe qui lit .ini et renvoie exactement le ArrayObject. Mais je voudrais éviter de lire application.ini avec Zend_Config_Ini une fois de plus après que Zend_Application l'ait déjà lu. Mais les classes Bootstrap ou Zend_Application ne fournissent pas de création automatique de ArrayObject à partir de application.ini.

Et la seconde, où puis-je stocker cette $ config alors? Dans Zend_Registry?

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

Et puis dans mon une commande d'action que je le récupérer:

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

Mais il semble un peu inefficace: J'ai une copie de application.ini dans le Bootstrap sous la forme d'un tableau habituel php et un copie de la même application.ini mais sous la forme de ArrayObject dans Zend_Registry aussi. Et dois faire deux étapes pour obtenir un paramètre de ma config. Comment puis-je résoudre ce problème plus efficacement?

+2

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

Répondre

24

En utilisant Zend_Controller_Front, vous pouvez récupérer des informations à partir application.ini où que vous soyez dans votre application (contrôleur, plug-in, modèles, etc.) en utilisant le code comme ceci:

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

Dites à application.ini vous aviez quelques options comme ceci:

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

Vous pouvez ensuite accéder à ces valeurs en utilisant la variable $config ci-dessus:

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

Espérons que cela aide.

+0

+1, bonne explication – SagarPPanchal

Questions connexes