-
Notifications
You must be signed in to change notification settings - Fork 133
/
ConfigHandle.php
118 lines (104 loc) · 2.78 KB
/
ConfigHandle.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
/********************************************
* Easy PHP *
* *
* A lightweight PHP framework for studying *
* *
* TIERGB *
* <https://github.com/TIGERB> *
* *
********************************************/
namespace Framework\Handles;
use Framework\App;
use Framework\Handles\Handle;
use Framework\Exceptions\CoreHttpException;
/**
* 配置文件处理机制
*
* @author TIERGB <https://github.com/TIGERB>
*/
class ConfigHandle implements Handle
{
/**
* 框架实例
*
* @var object
*/
private $app;
/**
* 配置
*
* @var array
*/
private $config = [];
/**
* 构造函数
*/
public function __construct()
{
# code...
}
/**
* 魔法函数__get.
*
* @param string $name 属性名称
*
* @return mixed
*/
public function __get($name = '')
{
return $this->$name;
}
/**
* 魔法函数__set.
*
* @param string $name 属性名称
* @param mixed $value 属性值
*
* @return mixed
*/
public function __set($name = '', $value = '')
{
$this->$name = $value;
}
/**
* 注册配置文件处理机制
*
* @param App $app 框架实例
* @return void
*/
public function register(App $app)
{
// load helper function file
require($app->rootPath . '/framework/helper.php');
$this->app = $app;
$app::$container->setSingle('config', $this);
$this->loadConfig($app);
// 设置时区
// define time zone
date_default_timezone_set($this->config['default_timezone']);
}
/**
* 加载配置文件
*
* @param App $app 框架实例
* @return void
*/
public function loadConfig(App $app)
{
/* 加载公共自定义配置 */
$defaultCommon = require($app->rootPath . '/config/common.php');
$defaultNosql = require($app->rootPath . '/config/nosql.php');
$defaultDatabase = require($app->rootPath . '/config/database.php');
$defaultSwoole = require($app->rootPath . '/config/swoole.php');
$this->config = array_merge($defaultCommon, $defaultNosql, $defaultDatabase, $defaultSwoole);
/* 加载模块自定义配置 */
$module = $app::$container->getSingle('config')->config['module'];
foreach ($module as $v) {
$file = "{$app->rootPath}/config/{$v}/config.php";
if (file_exists($file)) {
$this->config = array_merge($this->config, require($file));
}
}
}
}