Yii 中 common/config 跟 frontend/config 有什么区别? [ 2.0 版本 ]
yii 中 common/config 跟 frontend/config 有什么区别?按照教程在frontend/config 中建立一个db.php ,保存的是数据库文件,可是,程序默认找common中的数据库配置,怎样才能加载db.php?
共 3 个回答
-
db.php其实被frontend/config/main.php或者frontend/config/main-local.php的require之后,也相当于是写在frontend/config/main.php或者是main-local.php中。
common/config里面的配置是console,backend,frontend共用的,所以里面只放三者都适用的配置信息。比如你在frontend中用到module,则最好只在frontend/config中定义它,你要是在common里面的modules定义该module,你会发现执行console的command时会报错的,费力纠正这个错误是没有必要的,因为你不会在command中使用这个module。
只要看三者的入口函数就清楚了:
a) console的看yii$config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/common/config/main.php'), require(__DIR__ . '/common/config/main-local.php'), require(__DIR__ . '/console/config/main.php'), require(__DIR__ . '/console/config/main-local.php') );
b) frontend的看frontend/web/index.php
$config = yii\helpers\ArrayHelper::merge( require __DIR__ . '/../../common/config/main.php', require __DIR__ . '/../../common/config/main-local.php', require __DIR__ . '/../config/main.php', require __DIR__ . '/../config/main-local.php' );
c) backend的看backend/web/index.php
$config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/../../common/config/main.php'), require(__DIR__ . '/../../common/config/main-local.php'), require(__DIR__ . '/../config/main.php'), require(__DIR__ . '/../config/main-local.php') );
merge的好处是,除了可以合并配置信息,后面的定义还会覆盖前面相同key的定义,比如main.php中对应的db是生产环境的db配置,而main-local.php对应的db是自己开发环境的db配置,那么main-local.php会覆盖掉main.php的db配置(main-local.php放在后面),比较适合多人协同开发的环境。(顺便说一下:main-local.php一般是不放到git仓库或者svn仓库的)
。 -
sh_xiaojun 回答于 2015-03-30 11:30 举报
这是优先级的问题! 后者高于前者
ooiikaka1
最后登录:2022-04-26
在线时长:1小时28分
- 粉丝0
- 金钱4
- 威望0
- 积分14