Как получить параметры из файла Zend application.ini во время сеанса?
Возможный дубликат:
Как можно прочитать application.ini на контроллере, используя Zend Framework
application.ini
это файл конфигурации в ZF У меня там больше настроек, чем просто по умолчанию, о которых пишет руководство ZF. Но как я могу получить эти параметры из моих контроллеров действий, например? И где лучше хранить этот конфиг во время сеанса?
Bootstrap_Abstract
класс имеет getOptions()
метод, который возвращает простой массив PHP чтения application.ini
файл:
$app = new Zend_Application(APPLICATION_ENV, '/application.ini');
$config = $app->bootstrap()->getOptions(); // $config is a php array of application.ini
И я хотел бы получить элемент формы в стиле oop:
$param = $config[one][two]; // vs.
$param = $config->one->two; // like this
ZF имеет Zend_Config_Ini
класс, который читает .ini
и возвращает именно ArrayObject. Но я хотел бы избежать чтения application.ini
с Zend_Config_Ini
еще один раз после Zend_Application
в любом случае уже прочитал это. Но Bootstrap
или же Zend_Application
классы не обеспечивают автоматического создания ArrayObject из application.ini
,
И второе, где я могу хранить этот $config? В Zend_Registry
?
Zend_Registry::set('config', $config);
И затем в моем контроллере действий я получаю его:
$config = Zend_Registry::get('config'); // I retrieve config
$param = $config->one->two; // I retrieve parameter from it and use it
Но это кажется немного неэффективным: у меня есть одна копия application.ini
в Bootstrap
в виде обычного массива php и одной копии того же application.ini
но в виде ArrayObject в Zend_Registry
тоже. И нужно сделать два шага, чтобы получить параметр из моего конфига. Как я могу решить эту проблему более эффективно?
1 ответ
С помощью Zend_Controller_Front
вы можете получить информацию из application.ini
из любого места в вашем приложении (контроллер, плагин, модели и т. д.), используя такой код:
$config = Zend_Controller_Front::getInstance()->getParam('bootstrap');
Скажи в application.ini
у вас было несколько вариантов, как это:
apikeys.google.maps.id = "abc"
apikeys.google.maps.key = "123456789"
apikeys.twitter.oauth = "20jg9032jg9320gj30"
Затем вы можете получить доступ к этим значениям, используя выше $config
переменная:
$apikeys = $config->getOption('apikeys');
$mapsId = $apikeys['google']['maps']['id']; // abc
$maksKey = $apikeys['google']['maps']['key']; // 123456789
$twitKey = $apikeys['twitter']['oauth']; // 20jg9032jg9320gj30
Надеюсь, это поможет.