当前位置:  开发笔记 > 编程语言 > 正文

如何使用application.ini和user.ini设置Zend_Application

如何解决《如何使用application.ini和user.ini设置Zend_Application》经验,为你挑选了3个好方法。

我正在使用Zend_Application,我觉得我在application.ini混合应用程序和用户配置感觉不对.

我的意思是以下内容.例如,我的应用程序需要名称空间MyApp_中的一些库类.所以在application.ini中我放了autoloaderNamespaces [] ="MyApp_".这是纯粹的应用程序配置,除了程序员之外没有人会更改这些.另一方面,我把数据库配置放在那里,这是SysAdmin会改变的.

我的想法是我会在application.ini和user.ini之间拆分选项,其中user.ini中的选项优先(因此我可以在application.ini中定义标准值).

这是一个好主意吗?我怎样才能最好地实现这一点?我的想法是

扩展Zend_Application以获取多个配置文件

在我的Bootstrap中创建一个init函数加载user.ini

解析我的index.php中的配置文件并将它们传递给Zend_Application(听起来很难看)

我该怎么办?我希望有一个"最干净"的解决方案,为未来做好准备(较新的ZF版本,以及其他开发人员在同一个应用程序上工作)



1> Troy..:

我找到了这个问题的解决方案,可能是框架版本1.10的新功能.创建Zend Application对象时,可以在两个合并在一起的options数组中传入2个配置文件路径:

$application = new Zend_Application(
    APPLICATION_ENV,
    array(
        'config' => array(
            APPLICATION_PATH . '/configs/application.ini',
            APPLICATION_PATH . '/configs/user.ini'
        ),
    )
);



2> 小智..:

你知道这会合并你想要的inis吗?

在application.ini中

[production]
config[] = APPLICATION_PATH "/configs/dsn.ini"
config[] = APPLICATION_PATH "/configs/error.ini"
...



3> hobodave..:

这没有什么不对,我做了类似的事情.我建议使用你的第二选择.我只有一个_initConfig()方法,负责使用Zend_Config_Ini加载用户配置.我不会扩展Zend_App,这似乎有点多.

编辑:

在回复您的评论时,您只需:

$this->bootstrap('config');

因此,为了确保在DB之前加载配置,您将拥有如下内容:

protected function _initConfig()
{
    $config = new Zend_Config_Ini('/path/to/user.ini');
    return $config;
}

protected function _initDb()
{
    $this->bootstrap('config');
    $config = $this->getResource('Config');

    /* ... */
}

没有必要使用Zend_Registry,因为可以使用getResource()访问Bootstrap _init方法返回的任何内容.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有