A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

应用的配置决定了 Yii 应用应该怎样执行,因为这是唯一通过入口传递的参数。一个应用在不同的模式下有不同的执行方式。例如,应用在生产模式、开发模式和测试模式会需要不同的配置。在团队开发中每个开发者应有自己的数据库连接和自定义的应用配置。在本教程中,我们描述了如何管理应用程序配置,以满足上述所有需求。
在开始之前我们应该注意应用的配置作为php脚本来保存。因此我们可以放置任何 有效的php代码 在里面,这会使配置更加 '智能' 而不是简简单单的放回值对(name-value pairs)。
首先我们创建 主(main) 应用配置并保存为 main.php 文件。这个文件应该包含所有在生产模式下必要的配置。
下面我们创建 开发(development) 应用配置并保存为 dev.php。因为开发的配置和主配置大部分相同,所有我们通过 继承 的方式来创建。我们使用 CMap::mergeArray 来实施继承。
return CMap::mergeArray( require(dirname(__FILE__).'/main.php'), array( 'components'=>array( 'db'=>array( // define DB connection used for development ), ), ) );
代码中首先包含了main.php文件,并自定义了配置数组(例子中演示了数据库链接 DB connection 的配置)。然后返回两个配置合并后的结果作为最终的开发配置。注意我们在这没有使用php的函数array_merge()或array_merge_recursive()是因为它们不会已我们期望的方式去合并两个数组。
我们可以用同样的方式定义 测试 应用配置并保存为test.php
为了在不同的模式(生产、开发或测试)下运行程序我们应该在入口使用相对应的配置。为了防止在切换模式时修改入口文件的麻烦,我们可以为每个模式创建独立的入口。例如我们可以创建index.php,index-dev.php和index-test.php分别对应生产、开发和测试模式。在生产模式我们通过浏览器访问index.php,在开发模式访问index_dev.php,在测试模式访问index-test.php。
在团队开发中环境使用源码控制系统(如 SVN,CVS,GIT)来控制,每个开发者都希望有独立的应用配置(例如他们有不同的数据库连接)。所以在源码库中我们应该只保存 main.php 文件。每个开发人员的配置文件的其余部分只应保留在自己本地,以避免冲突。
Tip: 同样的方法也可以应用与其他基于PHP的配置。例如我们保存应用程序参数(通过Yii::app()->params方式访问)为一个 PHP 文件,我们可以使用上面的方法在不同的模式下自定义不同的参数

1 个回复

倒序浏览
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马