From 451ce104c574d35820995297c3e9077cb7fd0a02 Mon Sep 17 00:00:00 2001 From: sunxyw Date: Sat, 27 Aug 2022 00:38:55 +0800 Subject: [PATCH 1/2] fix config loading --- src/ZM/Config/ZMConfig.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ZM/Config/ZMConfig.php b/src/ZM/Config/ZMConfig.php index faf0b1c5..64c2e695 100644 --- a/src/ZM/Config/ZMConfig.php +++ b/src/ZM/Config/ZMConfig.php @@ -55,12 +55,14 @@ class ZMConfig implements \ArrayAccess * * @throws ConfigException 配置文件加载出错 */ - public function __construct(array $config_paths = [], string $environment = 'development') + public function __construct(array $config_paths = [], string $environment = 'uninitiated') { $this->config_paths = $config_paths ?: [self::DEFAULT_CONFIG_PATH]; $this->environment = $environment; $this->holder = new Config([]); - $this->loadFiles(); + if ($environment !== 'uninitiated') { + $this->loadFiles(); + } } /** @@ -137,7 +139,6 @@ class ZMConfig implements \ArrayAccess // 按照加载顺序加载配置文件 foreach (self::LOAD_ORDER as $load_type) { foreach ($stages[$load_type] as $file_path) { - logger()->info("加载配置文件:{$file_path}"); $this->loadConfigFromPath($file_path); } } @@ -205,6 +206,7 @@ class ZMConfig implements \ArrayAccess public function reload(): void { $this->holder = new Config([]); + $this->loaded_files = []; $this->loadFiles(); } @@ -226,7 +228,7 @@ class ZMConfig implements \ArrayAccess public function offsetUnset($offset): void { - $this->set($offset, null); + $this->set($offset); } /** @@ -365,5 +367,6 @@ class ZMConfig implements \ArrayAccess // 加入配置 $this->merge($group, $config); + logger()->debug("已载入配置文件:{$path}"); } } From 96ebb770b6d169a6bf73fecb2c0b2df95f1a15d4 Mon Sep 17 00:00:00 2001 From: sunxyw Date: Sat, 27 Aug 2022 01:11:37 +0800 Subject: [PATCH 2/2] add environment aliases --- src/ZM/Config/ZMConfig.php | 27 ++++++++++++++++++++++++--- src/ZM/Framework.php | 3 ++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/ZM/Config/ZMConfig.php b/src/ZM/Config/ZMConfig.php index 64c2e695..ef6d30a7 100644 --- a/src/ZM/Config/ZMConfig.php +++ b/src/ZM/Config/ZMConfig.php @@ -27,6 +27,15 @@ class ZMConfig implements \ArrayAccess */ public const DEFAULT_CONFIG_PATH = SOURCE_ROOT_DIR . '/config'; + /** + * @var string[] 环境别名 + */ + public static array $environment_alias = [ + 'dev' => 'development', + 'test' => 'testing', + 'prod' => 'production', + ]; + /** * @var array 已加载的配置文件 */ @@ -58,7 +67,7 @@ class ZMConfig implements \ArrayAccess public function __construct(array $config_paths = [], string $environment = 'uninitiated') { $this->config_paths = $config_paths ?: [self::DEFAULT_CONFIG_PATH]; - $this->environment = $environment; + $this->environment = self::$environment_alias[$environment] ?? $environment; $this->holder = new Config([]); if ($environment !== 'uninitiated') { $this->loadFiles(); @@ -77,6 +86,16 @@ class ZMConfig implements \ArrayAccess } } + /** + * 获取当前环境 + * + * @return string 当前环境 + */ + public function getEnvironment(): string + { + return $this->environment; + } + /** * 设置当前环境 * @@ -86,8 +105,9 @@ class ZMConfig implements \ArrayAccess */ public function setEnvironment(string $environment): void { - if ($this->environment !== $environment) { - $this->environment = $environment; + $target = self::$environment_alias[$environment] ?? $environment; + if ($this->environment !== $target) { + $this->environment = $target; $this->reload(); } } @@ -248,6 +268,7 @@ class ZMConfig implements \ArrayAccess $env = null; } else { $env = array_pop($parts); + $env = self::$environment_alias[$env] ?? $env; } $group = implode('.', $parts); return [$group, $ext, $load_type, $env]; diff --git a/src/ZM/Framework.php b/src/ZM/Framework.php index 07be9462..687e10ec 100644 --- a/src/ZM/Framework.php +++ b/src/ZM/Framework.php @@ -19,6 +19,7 @@ use OneBot\Driver\Workerman\WorkermanDriver; use OneBot\Util\Singleton; use Phar; use ZM\Command\Server\ServerStartCommand; +use ZM\Config\ZMConfig; use ZM\Event\EventProvider; use ZM\Event\Listener\HttpEventListener; use ZM\Event\Listener\ManagerEventListener; @@ -324,7 +325,7 @@ class Framework // 打印工作目录 $properties['working_dir'] = WORKING_DIR; // 打印环境信息 - $properties['environment'] = $this->argv['env']; + $properties['environment'] = ZMConfig::getInstance()->getEnvironment(); // 打印驱动 $properties['driver'] = config('global.driver'); // 打印logger显示等级