fecshop config加载顺序问题

bug问题 · dionyang · 于 6年前 发布 · 2185 次阅读

这是我刚才在配置项重写user组件的identityClass属性时发现的。我发现local目录的config加载顺序居然在vendor之前,这样merge之后,vendor里的config配置会覆盖掉local里的,是不是反了?

if ($use_merge_config_file) {
    $config = require '../merge_config.php';
} else {
    $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'),
        // fecshop services config
        require(__DIR__.'/../../vendor/fancyecommerce/fecshop/config/fecshop.php'),
        // fecshop module config
        require(__DIR__.'/../../vendor/fancyecommerce/fecshop/app/appserver/config/appserver.php'),

        // thrid part confing

        // common modules and services.
        require(__DIR__.'/../../common/config/fecshop_local.php'),

        // appadmin local modules and services.
        require(__DIR__.'/../config/fecshop_local.php')

    );
}
共收到 4 条回复
Fecmall#16年前 0 个赞

1.

 require(__DIR__.'/../../common/config/main.php'),
 require(__DIR__.'/../../common/config/main-local.php'),
 require(__DIR__.'/../config/main.php'),
 require(__DIR__.'/../config/main-local.php'),

这几个部分是Yii2框架的配置,也就是给Yii2的一些数据库,debug等的开启和关闭。

如果你使用过Yii2的advanced,你会看到这几个配置文件的,这几个配置文件对应Yii2的本地配置。

2.fecshop的配置:

// fecshop services config
require(__DIR__.'/../../vendor/fancyecommerce/fecshop/config/fecshop.php'),
// fecshop module config
        require(__DIR__.'/../../vendor/fancyecommerce/fecshop/app/appserver/config/appserver.php'),

fecshop想要重写Yii2的配置,可以在这些配置里面添加,fecshop要高于Yii2的配置,可以覆盖

3.

// thrid part confing

        // common modules and services.
        require(__DIR__.'/../../common/config/fecshop_local.php'),

        // appadmin local modules and services.
        require(__DIR__.'/../config/fecshop_local.php')

这个部分就不用说了,这是用户二开的配置,优先级最高

Fecmall#26年前 0 个赞

后面的配置会覆盖前面的配置,对于上面的第一部分的说明,了解Yii2的应该不陌生。

dionyang#36年前 0 个赞

@Terry #1楼 好的谢谢解答。我只是在想main等一些配置是不是应该在vendor之前。那还是写在fecshop_local中吧。

Fecmall#46年前 0 个赞

@dionyang [#3楼](#comment3) 如果是对Yii框架的配置,你写在

 require(__DIR__.'/../../common/config/main.php'),
 require(__DIR__.'/../../common/config/main-local.php'),
 require(__DIR__.'/../config/main.php'),
 require(__DIR__.'/../config/main-local.php'),
 

注意,仅仅是Yii2框架的配置,譬如配置mysql redis mongodb等

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics