Fecshop 配置結(jié)構(gòu)

2018-05-24 14:37 更新

Fecshop 配置結(jié)構(gòu)

fecshop 配置結(jié)構(gòu)是層級覆蓋的方式,通過yii2的 yii\helpers\ArrayHelper::merge()函數(shù)
將所有的配置進(jìn)行合并,最終成為一個大數(shù)組。配置結(jié)構(gòu)通過層級覆蓋的方式可以很方便的對fecshop的功能進(jìn)行重寫

配置文件以及優(yōu)先級

1.fecshop合并的配置文件:

fecshop配置是根據(jù)優(yōu)先級,優(yōu)先級高的配置可以覆蓋優(yōu)先級低的配置, 優(yōu)先級由低到高的排列如下(其實就是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'),
    # fecshop services config
    require(__DIR__ . '/../../vendor/fancyecommerce/fecshop/config/fecshop.php'),
    # fecshop module config
    require(__DIR__ . '/../../vendor/fancyecommerce/fecshop/app/appfront/config/appfront.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')

    
);

1到4,是Yii2框架的配置文件結(jié)構(gòu):

1.@common/config/main.php # Yii2 公用配置,一般是Yii2的一些組件的公用配置。

2.@common/config/main-local.php # Yii2 本地公用配置,一般是Yii2的一些數(shù)據(jù)庫組件的配置

3.@app/config/main.php # Yii2 本app內(nèi)的配置

4.@app/config/main-local.php # Yii2 本app內(nèi)的本地配置

5和6部分,是fecshop的配置文件結(jié)構(gòu):

5.@vendor/fancyecommerce/fecshop/config/fecshop.php # Fecshop的公用配置,一般是組件和服務(wù)的配置。

6.@vendor/fancyecommerce/fecshop/app/appfront/config/appfront.php # Fecshop appfront這個入口的獨有配置,里面包含模塊和一些組件的配置。

第7部分為第三方開發(fā)的擴(kuò)展的配置引入部分,您使用的第三方插件的配置,可以在這里引入進(jìn)來。

7.第三方配置文件地址。

8和9部分,是二次開發(fā)者的配置文件部分:

8.@common/config/fecshop_local.php # 二次開發(fā)者的各個入口的公用配置

9.@app/config/fecshop_local.php # 二次開發(fā)者的當(dāng)前入口的獨有配置

上面8個配置文件的內(nèi)容,通過yii\helpers\ArrayHelper::merge()函數(shù)合并,最后 形成一個數(shù)組,在合并的過程中,1的優(yōu)先級最低,8個優(yōu)先級最高,優(yōu)先級高的配置 項可以覆蓋優(yōu)先級低的配置項。

覆蓋順序:

1.fecshop(5-6)可以覆蓋前面Yii2的配置項(1-4)
2.第三方擴(kuò)展(7),可以覆蓋fecshop的配置項(1-6)
3.二次開發(fā)者(8-9)可以覆蓋上面所有的配置(1-7)

2.對于運費的配置,是通過csv的方式存儲公式,路徑為

@common/config/shipping/fast_shipping.csv

3.yii class map重寫機(jī)制

$yiiClassMap = require(__DIR__ . '/../config/YiiClassMap.php');
if(is_array($yiiClassMap) && !empty($yiiClassMap)){
    foreach($yiiClassMap as $namespace => $filePath){
        Yii::$classMap[$namespace] = $filePath;
    }
}

通過classMap的配置,可以重寫任意一個class文件,譬如

<?php
return [
    'fecshop\app\appfront\helper\test\My' => '@appfront/helper/My.php',   
];

具體使用方法參看文章:通過配置的方式重寫某個Yii2 文件 或第三方擴(kuò)展文件

優(yōu)先級部分配置細(xì)化 - yii\helpers\ArrayHelper::merge()部分

上面的9個配置文件,有的配置文件還包含其他的配置文件,下面逐一列舉

1.@vendor/fancyecommerce/fecshop/config/fecshop.php

該配置文件包含:

1.1@vendor/fancyecommerce/fecshop/config/services/*.php ,這個文件夾下面所有的php配置文件,這里面是各個Fecshop Services(服務(wù))的配置

1.2@vendor/fancyecommerce/fecshop/config/components/*.php ,這個文件夾下面的所有的php文件,這里面是各個Fecshop Component(組件)的配置

2.@vendor/fancyecommerce/fecshop/app/appfront/config/appfront.php

該配置文件包含:

2.1@vendor/fancyecommerce/fecshop/app/appfront/config/params.php 這里面是一些參數(shù)的默認(rèn)配置。

2.2@vendor/fancyecommerce/fecshop/app/appfront/config/modules/*.php 這個文件夾下面所有的php配置文件,這里面是各個模塊對應(yīng)的配置

3.@common/config/fecshop_local.php

該配置文件包含:

3.1@common/config/fecshop_local_modules/*.php 這個文件夾下面所有的php配置文件,這里面是二次開發(fā)的公用部分,添加或重寫的 模塊方面的配置

3.2@common/config/fecshop_local_services/*.php 這個文件夾下面所有的php配置文件,這里面是二次開發(fā)的公用部分,添加或重寫的 服務(wù)方面的配置

4.@app/config/fecshop_local.php

該配置文件包含:

4.1@app/config/fecshop_local_modules/*.php 這個文件夾下面所有的php配置文件,這里面是二次開發(fā)的公用部分,添加或重寫的 模塊方面的配置

4.2@app/config/fecshop_local_services/*.php 這個文件夾下面所有的php配置文件,這里面是二次開發(fā)的公用部分,添加或重寫的 服務(wù)方面的配置

一開始說的9個配置文件,以及對應(yīng)的這些細(xì)分的配置文件,共同組合起來合并,形成 fecshop的最終配置。

通過配置項的覆蓋,我們就可以重寫各個組件,服務(wù)等功能,二次開發(fā)自己的功能。

配置加速

配置文件的合并是在index.php文件中, 為了加速,您可以把合并后的數(shù)組放到緩存中,然后直接讀取出來,節(jié)省數(shù)據(jù)合并帶來的開銷。 如果您更新了配置,您需要刷新一下緩存讓更新的配置生效。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號