Как загрузить больше ресурсов, которые находятся вне приложения env?

У меня есть application.ini, как это

[production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[database]
resources.db.adapter               = PDO_MYSQL
resources.db.params.dbname         = "ccgss"
resources.db.params.username       = "root"
resources.db.params.password       = ""
resources.db.params.hostname       = "localhost"
resources.db.isDefaultTableAdapter = true

[layout]
layoutPath = APPLICATION_PATH "/layouts"
layout = default
contentKey = "content"

По умолчанию Zend Framework загружает [production] раздел. Как автоматически загрузить другие разделы?

Дополнительно

Как я могу изменить среду между staging, testing, development а дальше?

2 ответа

Решение

Чтобы переключать среды вашего приложения между производством, разработкой и т. Д., Просто установите для переменной подходящее значение в вашем .htaccess файл:

SetEnv APPLICATION_ENV development

Если вы хотите автоматически загрузить собственные плагины ресурсов из начальной загрузки, вы можете сделать это, просто прикрепив их к resources массив:

resources.myplugin.param1 = "myvalue"

Не забудьте добавить пространство имен и каталог вашего плагина к pluginsPath значение также, или ZF не будет знать, где искать:

pluginPaths.My_Resource_Namespace = "My/Namespace/Folder"

Наконец, если вы хотите получить доступ к значениям в вашем конфигурационном файле без использования resources Плагин, вы можете загрузить файл, используя класс Zend_Config_Ini:

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

Zend Framework загружает раздел "production", потому что в вашем index.php ваша среда установлена ​​на "production"

defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

Таким образом, чтобы изменить вашу среду на нечто иное, чем производство, вам просто нужно изменить значение APPLICATION_ENV переменная (вы можете сделать это в.htaccess, например).

Кроме того, вам, вероятно, не нужны отдельные разделы для базы данных и макета, просто включите их в раздел "производство". Если вы используете для них отдельные разделы, они не анализируются, поскольку анализируется только текущий раздел среды, как видно из этой строки.

$application = new Zend_Application(
  APPLICATION_ENV,
  APPLICATION_PATH . '/configs/application.ini'
);
Другие вопросы по тегам