如何加载更多来自应用程序环境的资源?

时间:2010-09-01 19:16:12

标签: php zend-framework initialization zend-config

我有像这样的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框架会加载[production]部分。如何自动加载其他部分?

另外

如何更改stagingtestingdevelopment之间以及之间的环境?

2 个答案:

答案 0 :(得分:1)

要在生产,开发等之间切换应用程序的环境,只需将变量设置为.htaccess文件中的适当值:

SetEnv APPLICATION_ENV development

如果您想从引导程序中自动加载自己的resource plugins,只需将其添加到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');

答案 1 :(得分:1)

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'
);