Как можно прочитать 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();