32 public static function build($mainConfigFile)
34 $mainConfigFile = realpath($mainConfigFile);
35 $customConfigFile = realpath(dirname(__FILE__) .
'/../../custom/config/client_main.php');
37 if ($mainConfigFile) {
38 $appDir = realpath(dirname(__FILE__) .
'/../../');
39 if (strpos($mainConfigFile, $appDir) !== 0) {
40 throw new Exception(
'Config file error');
43 $mainConfig = include $mainConfigFile;
44 $customConfig = include $customConfigFile;
45 foreach ($customConfig[
'modules'] as $key => $cConfig) {
46 $name = is_integer($key) ? $cConfig : $key;
47 $cConfig = !is_array($cConfig) ? array() : $cConfig;
48 if (isset($mainConfig[
'modules'][$name])) {
49 $mainConfig[
'modules'][$name] = CMap::mergeArray($mainConfig[
'modules'][$name], $cConfig);
51 $mainConfig[
'modules'][$name] = $cConfig;
52 if (($k = array_search($name, $mainConfig[
'modules'])) !==
false) {
53 unset($mainConfig[
'modules'][$k]);
56 unset($customConfig[
'modules'][$key]);
59 foreach ($customConfig[
'components'] as $key => $cConfig) {
60 $name = is_integer($key) ? $cConfig : $key;
61 $cConfig = !is_array($cConfig) ? array() : $cConfig;
62 if (isset($mainConfig[
'components'][$name])) {
63 $mainConfig[
'components'][$name] = CMap::mergeArray($mainConfig[
'components'][$name], $cConfig);
65 $mainConfig[
'components'][$name] = $cConfig;
66 if (($k = array_search($name, $mainConfig[
'components'])) !==
false) {
67 unset($mainConfig[
'components'][$k]);
70 unset($customConfig[
'components'][$key]);
72 $resultConfig = CMap::mergeArray($mainConfig, $customConfig);