10

Olası Çoğalt:
How could read application.ini on controller using zend frameworkOturum sırasında Zend application.ini dosyasından parametreler nasıl alınır?

application.ini ZF bir yapılandırma dosyasıdır. ZF el kitabının yazdığı varsayılan değerlerden daha fazla ayarım var. Ancak bu parametreleri, örneğin eylem denetleyicilerimden nasıl alabilirim? Ve bu yapılandırmayı oturum sırasında saklamak nerede daha iyi?

Bootstrap_Abstract sınıf application.ini dosyayı okumak basit php dizisi döndürür getOptions() yöntemi vardır:

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

ZF: Ben almak istiyorum

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

Ve eleman o-oop tarzı oluşturacak .ini'leri okuyan ve tam olarak ArrayObject öğesini döndüren Zend_Config_Ini sınıfına sahiptir. Ama Zend_Application'un zaten okumasına rağmen Zend_Config_Ini ile application.ini'u okumayı bir daha denemek isterim. Ancak Bootstrap veya Zend_Application sınıfları, application.ini'dan bazı otomatik ArrayObject oluşturmalarını sağlamaz.

Ve ikincisi, bu $ config'i nerede saklayabilirim? Zend_Registry?

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

Ama biraz verimsiz görünmektedir:

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

Ve

sonra benim bazı eylem denetleyicisi bunu almak her zamanki php dizi ve biri formunda Bootstrap içinde application.ini biri kopyasına sahip Aynı application.ini'un kopyasını ancak Zend_Registry numaralı telefondan ArrayObject şeklinde. Ve yapılandırmamdan bir parametre almak için iki adımı yapmalıyım. Bu sorunu daha verimli bir şekilde nasıl çözebilirim?

+2

Ayrıca bkz. Http://akrabat.com/zend-framework/accessing-your-configuration-data-in-application-ini/ – Phil

cevap

24

Zend_Controller_Front kullanarak, uygulama (kontrolör, eklenti, modeller vb) böyle kod kullanarak herhangi bir yerden application.ini bilgi çağırabilirler:

: application.ini yılında

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

Say böyle bazı seçenekler vardı

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

ardından, yukarıdaki $config değişkeni kullanarak bu değerleri erişebilir

Yardım etmenize yardımcı olur.

+0

+1, güzel açıklama – SagarPPanchal

İlgili konular