10

Mögliche Duplizieren:
How could read application.ini on controller using zend frameworkWie Parameter aus Zend application.ini Datei während der Sitzung abgerufen werden?

application.ini ist eine Konfigurationsdatei in ZF. Ich habe dort mehr Einstellungen als nur die Standardeinstellungen, über die das ZF-Handbuch schreibt. Aber wie kann ich diese Parameter beispielsweise von meinen Action-Controllern abrufen? Und wo ist es besser, diese Konfiguration während der Sitzung zu speichern?

Die Bootstrap_Abstract Klasse getOptions() Methode, die von einer einfachen PHP-Array zurückgibt lesen application.ini Datei:

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

Und Ich mag würde zu Element, um es bekommen zu bilden oop-style:

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

ZF hat Zend_Config_Ini Klasse, die .ini liest und genau das ArrayObject zurückgibt. Aber ich möchte vermeiden, application.ini mit Zend_Config_Ini noch einmal zu lesen, nachdem Zend_Application sowieso schon gelesen hat. Aber Bootstrap oder Zend_Application Klassen bieten keine automatische Erstellung von ArrayObject von application.ini.

Und die zweite, wo kann ich diese $ config dann speichern? In Zend_Registry?

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

Und dann in meiner etwas Action Controller abrufen ich es:

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

Aber es scheint ein wenig ineffizient: Ich eine Kopie application.ini in den Bootstrap in Form von üblichem PHP-Array und einem Kopie der gleichen application.ini aber in Form von ArrayObject in Zend_Registry auch. Und müssen zwei Schritte machen, um einen Parameter von meiner Konfiguration zu erhalten. Wie kann ich dieses Problem effizienter lösen?

+2

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

Antwort

24

Mit Zend_Controller_Front, können Sie Informationen von application.ini von überall in Ihrer Anwendung (Controller, Plugin, Modelle usw.) unter Verwendung von Code wie folgt abrufen:

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

Say in application.ini hatten Sie einige Optionen wie folgt aus:

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

Sie können diese Werte dann Zugriff auf die oben $config Variable:

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

Hoffe, dass hilft.

+0

+1, nette Erklärung – SagarPPanchal

Verwandte Themen