Yii2是多文件配置結(jié)構(gòu),將多個(gè)配置文件分散到各個(gè)路徑下,
在初始化的時(shí)候最終合成一個(gè)配置數(shù)組,這種方式比較靈活,后面的數(shù)組和覆蓋前面的數(shù)組
配置,這種方式非常適合重寫(xiě)某些組件,服務(wù)等
$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')
);
對(duì)于
yii\helpers\ArrayHelper::merge()
函數(shù),可以點(diǎn)擊這里查看具體的介紹:
yii2 關(guān)于helper類(lèi) ArrayHelper::merge()
方法的介紹
merge函數(shù)里面的所有參數(shù)文件,最終合并成一個(gè)文件,如果配置文件中含有相同的配置項(xiàng), 最后面的配置文件中的配置項(xiàng),將覆蓋前面的配置文件中的配置項(xiàng)。
2.1
require(__DIR__ . '/../../../common/config/main.php'),
這個(gè)是Yii2的配置文件,也是各個(gè)入口的公用配置,這個(gè)文件一般是加入到svn版本庫(kù)中的
2.2
require(__DIR__ . '/../../../common/config/main-local.php')
這個(gè)是Yii2的配置文件,也是各個(gè)入口的公用配置, 里面一般是一些獨(dú)有的配置,譬如mysql,mongodb,redis等,因?yàn)榫€(xiàn)上和線(xiàn)下的數(shù)據(jù)庫(kù)配置不一樣, 因此,這個(gè)文件一般是不加入到svn版本庫(kù)中的,
2.3
require(__DIR__ . '/../../config/main.php')
該入口的Yii2的配置文件,一般添加到svn版本庫(kù)
2.4
require(__DIR__ . '/../../config/main-local.php')
該入口的Yii2的配置文件,一般不添加到svn版本庫(kù)
2.5
require(__DIR__ . '/../../../vendor/fancyecommerce/fecshop/config/fecshop.php')
fecshop的公用配置部分,里面是fecshop的service和component配置。 這個(gè)配置文件內(nèi)容如下:
$services = [];
foreach (glob(__DIR__ . '/services/*.php') as $filename){
$services = array_merge($services,require($filename));
}
## 組件
$components = [];
foreach (glob(__DIR__ . '/components/*.php') as $filename){
$components = array_merge($components,require($filename));
}
return [
'components' => $components,
'services' => $services,
'params' => [
],
];
他們加載其他文件夾下面的所有php文件進(jìn)行合并,最終成為一個(gè)數(shù)組。
2.6
require(__DIR__ . '/../../../vendor/fancyecommerce/fecshop/app/appfront/config/appfront.php')
fecshop的appfront入口的配置部分
2.7
添加第三方插件庫(kù)的配置地址
2.8
require(__DIR__ . '/../../../common/config/fecshop_local.php')
本地用戶(hù)用于二開(kāi)的公用配置文件
2.9
require(__DIR__ . '/../../config/fecshop_local.php')
本地用戶(hù)用于二開(kāi)的appfront的配置文件
綜上,2.8 和 2.9 是用于二開(kāi)的配置,可以覆蓋上面的其他配置, 因此,您如果想重寫(xiě)某個(gè)組件,某個(gè)service,甚至某個(gè)module ,可以通過(guò)添加配置的方式,重定向到您的路徑中去。
配置文件是fecshop進(jìn)行二開(kāi)的重要部分,通過(guò)配置文件可以在不修改fecshop核心 源代碼的前提下,修改fecshop和yii2的任意功能。
更多建議: