Как можно прочитать application.ini на контроллере, используя Zend Framework

У меня есть эти строки в моем application.ini

как я могу прочитать пользователя в моем контроллере

resources.doctrine.dbal.connections.default.parameters.driver   = "pdo_mysql"
resources.doctrine.dbal.connections.default.parameters.dbname   = "zc"
resources.doctrine.dbal.connections.default.parameters.host = "localhost"
resources.doctrine.dbal.connections.default.parameters.port = 3306
resources.doctrine.dbal.connections.default.parameters.user = "root"
resources.doctrine.dbal.connections.default.parameters.password = "123456"

Я использую этот код, но он возвращается null

$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
 $user = $bootstrap->getOption('user');
var_dump($user);

редактировать: как я могу прочитать все варианты подключения?

6 ответов

Решение

Я думаю, что вы должны использовать

$this->getInvokeArgs('bootstrap');

Для получения дополнительной информации см. Эту главу в руководстве.

Как насчет использования

$conf = $bootstrap->getOption('resources');
$dbConf = $conf['doctrine']['dbal']['connections']['default']['parameters'];

Как насчет чего-то вроде:

$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV);
$connectionParams = $config->resources->doctrine->connections;

Или во время Bootstrapсоздать и сохранить это $config объект в Bootstrap или в Zend_Registry для последующего поиска в вашем контроллере.

Это идет в вашем контроллере.

$bootstrap = $this->getInvokeArg('bootstrap');
$appinidata = $bootstrap->getOptions();
$user=$appinidata['resources']['doctrine']['dbal']['connections']['default']['parameters'] ['user'];

Это должно вывести "root".

print_r($user);

Вы можете установить любую переменную, используя метод set, как показано в index.php внутри публичной папки.

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

как только переменная была установлена, вы можете получить доступ к любым контроллерам / моделям, следуя методу

Zend_Registry:: получить ('конфигурации');

Хоп это помогает!

В этом случае вы должны использовать класс Zend_Config_Ini

$config = new Zend_Config_Ini('/path/to/config.ini','staging',$options);

второй параметр - это раздел в INI- файле, который должен быть загружен;Третий параметр - это ключ, позволяющий изменить загруженный файл.

Вы можете выставить значение user следующим образом:

$config->resources->doctrine->dbal->connections->default->parameters->user;

Чтобы попасть в контейнерный ресурс Doctrine, просто используйте:

$bootstrap = $this->getInvokeArg('bootstrap');
$doctrine = $bootstrap->getResource('doctrine');

Оттуда вы можете перейти к имени пользователя соединения по умолчанию (вы можете указать соединение при необходимости, просто передайте имя соединения в вызове getConnection):

$username = $doctrine->getConnection()->getUsername();
Другие вопросы по тегам