深入浅出理解zend framework(三)

 Zend_Config

      开篇中提到,一切zf程序的起点都是index.phpzend_application。它主要完成各种配置项目的加载并通过run方法,将请求转发给前端控制器。

      配置文件的加载,是通过Zend_config来完成的,我们来看一下它是如何工作的。

      一般情况下,我们会在初始化zend_loader后,紧跟着就初始化zend_config,并读取configs中的application.ini主配置文件。

              $config = new Zend_Config_Ini($filename,$section, $options);

      第一个参数是指明要加载的配置文件地址,第二个参数是说明要加载哪一节配置(比如生产环境配置,开发环境配置)

      Zend_config_ini的构造函数,首先会执行$this->loadIniFile()将该文件加载进来。然后根据$section的配置,确定是全部读取,还是只读取某一节。然后调用$this->_processSection()读取小节。$this->_processSection()中再调用$this->_processKey()读取具体配置信息。

      下面介绍一下配置文件的书写方式,有一点需要说明,配置文件里面的小节命名方式有的会包含冒号分隔符,这是为了适应不同环境下配置而设置的分隔符。冒号前面为条件,后面为小节名,会根据参数来决定读取哪一节配置。每一行具体配置的名称,可以用.来进行分隔。这样配置文件的结构就是:节(:)->(.)->配置信息

 

      配置文件书写方式:

      如果有多种环境,可以通过:来进行配置,比如在生产环境下使用以下配置

      [live]

      phpSettings.display_errors=0

      在测试环境下和开发环境下,需要显示错误,可以在[live]段全部写完后,增加[staging:live][dev:live]

      [staging:live]

      phpSettings.display_errors=1

      [dev:live]

      phpSettings.display_errors=1

 

        Zend_config_ini构造函数的第二个参数$section,会决定加载哪一段配置。该参数如果为null,会加载所有配置

 

 

 

 

 

类图

 

类说明:

class Zend_Config_Ini

{

     

     

     Proectced function _parseIniFile($filename)//调用php内置函数parse_ini_file解析读入的配置文件, process_sections 参数设为 TRUE。

     protected function _loadIniFile($filename)//加载配置文件,调用_parseIniFile解析成数组,对于存在:号的可选配置,进行重命名,:号前的作为数组key:号后的内容融合到value中。

     protected function _processSection($iniArray, $section, $config = array())//处理每一个小节

     protected function _processKey($config, $key, $value)//处理每一个key,包括key的嵌套

序列图

 

 

 

 

其他图

 

相关PHP内置函数:

     解析配置文件:

     Array parse_ini_file( string $filename [, bool $process_sections ] )

     应用文件:Ini.php

     应用目的:载入一个由 filename 指定的 ini 文件,并将其中的设置作为一个联合数组返回。如果将最后的 process_sections 参数设为 TRUE,将得到一个多维数组,包括了配置文件中每一节的名称和设置。process_sections 的默认值是 FALSE。

                   在iniphp中,该函数被封装在_parseIniFile方法中,process_sections被设置为true;

    

     合并数组:array_merge(array1,array2,array3...)

     应用文件:Ini.php

     应用目的:处理带:号的小节,将:号前面的字符作为小节名,:号后面的内容融合到内容数组中。

 

 

在项目中的应用:

      在application/configs/application.ini中配置各种信息,也可以增加其他ini文件,然后在index.asp中调用 Zend_Config的merge()方法进行整合。

 

 

posted @ 2012-03-04 12:15  abner.liu  阅读(1241)  评论(1编辑  收藏  举报