1.zend_Config被设计在应用程序中简化访问和使用配置数据。它为在应用程序代码中访问这样的配置数据提供了一个基于用户接口的嵌入式对象属性。配置数据可能来自于各种支持等级结构数据存储的媒体
// 给出一个配置数据的数组 $configArray = array( ‘webhost’ => ‘localhost’, ‘database’ => array( ‘adapter’ => ‘pdo_mysql’, ‘params’ => array( ‘host’ => ‘localhost, ‘username’ => ‘dbuser’, ‘password’ => ‘secret’, ‘dbname’ => ‘mydatabase’ ) ) );
// 基于配置数据创建面向对象 $config = new Zend_Config($configArray);
// 输出配置数据 (结果为’localhost’中) echo $config->webhost;
// 使用配置数据来连接数据库 $db = Zend_Db::factory($config->database->adapter, $config->database->params->toArray());
// 另外的用法:简单地传递 Zend_Config 对象。 // Zend_Db factory 知道如何翻译它。 $db = Zend_Db::factory($config->database);
PS:还可这样使用 // config.php return array( ‘webhost’ => ‘localhost’, ‘database’ => array( ‘adapter’ => ‘pdo_mysql’, ‘params’ => array( ‘host’ => ‘localhost’, ‘username’ => ‘dbuser’, ‘password’ => ‘secret’, ‘dbname’ => ‘mydatabase’ ) ) ); 然后$config = new Zend_Config(require ‘config.php’);
2.理论
配置数据在Zend_Config构造器通过关联数组(associative arrary)可访问,为了支持从通用到特殊组织数据,它可以是多维的。具体的适配器类函数为Zend_Config的构造器从存储到处理关联数组来适应配置数据。配置数据通过Zend_Config可用是只读的! Zend_Config函数家族把配置数据组织成节(section)。Zend_Config适配器对象可以带一个指定的节加载,或者带有多个指定的节,或者所有节(如果没有指定)。 这里说的节就是config/application.ini内容中 [mysql] db.adapter=PDO_MYSQL db.params.host=localhost db.params.username=root db.params.password=Joyous db.params.dbname=test db.params.charset=utf8 注意这里的属性是固定内容
3.Zend_Config_Ini
我们开发和上线的产品使用的数据库是不一样的,这个时候就显示了这个Zend_Config_Ini的威力 比如 ; 上线数据库 [production] webhost = www.0377joyous.com database.adapter = pdo_mysql database.params.host = localhost database.params.username = root database.params.password = 123456 database.params.dbname = production
; 开发站点配置数据从生产站点配置数据集成并如果需要可以重写 [staging : production] database.params.host = localhost database.params.username = test database.params.password = 123 $config = new Zend_Config_Ini(‘/path/to/config.ini’, ‘staging’); 这样我们会在开发的时候加载了[staging : production]来覆盖掉上面的配置production
4.Zend_Config_Xml(使用基本和Zend_Config_Ini雷同,具体可以参考手册)
附:在使用Zend_Config_Ini经常我们看到DIRECTORY_SEPARATOR这个常量和constant其中DIRECTORY_SEPARATOR是代表分割符号(在windows和linux是不一样的)constant是返回常量值 realpath是将路径转换成绝对路径(也就是文档在硬盘上存放的距离位置)