From ca1d2a1ed8fa51084f5cb1a11cae87267bc6a946 Mon Sep 17 00:00:00 2001 From: sunxyw <31698606+sunxyw@users.noreply.github.com> Date: Sun, 15 Jan 2023 21:30:44 +0800 Subject: [PATCH 1/3] add environment variables support (#255) --- composer.json | 3 +- config/container.php | 3 + config/global.php | 8 +-- src/Globals/global_functions.php | 10 ++++ src/ZM/Bootstrap/LoadConfiguration.php | 23 ++++++++ src/ZM/Config/Environment.php | 82 ++++++++++++++++++++++++++ src/ZM/Config/EnvironmentInterface.php | 23 ++++++++ 7 files changed, 147 insertions(+), 5 deletions(-) create mode 100644 src/ZM/Config/Environment.php create mode 100644 src/ZM/Config/EnvironmentInterface.php diff --git a/composer.json b/composer.json index 33816409..bb42d5a9 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,8 @@ "symfony/console": "^6.0", "symfony/polyfill-ctype": "^1.19", "symfony/polyfill-mbstring": "^1.19", - "symfony/routing": "~6.0 || ~5.0 || ~4.0" + "symfony/routing": "~6.0 || ~5.0 || ~4.0", + "vlucas/phpdotenv": "^5.5" }, "require-dev": { "captainhook/captainhook": "^5.10", diff --git a/config/container.php b/config/container.php index 5a79ffda..9d4169db 100644 --- a/config/container.php +++ b/config/container.php @@ -5,6 +5,8 @@ declare(strict_types=1); use OneBot\Driver\Driver; use OneBot\Driver\Process\ProcessManager; use Psr\Log\LoggerInterface; +use ZM\Config\Environment; +use ZM\Config\EnvironmentInterface; use ZM\Framework; /* @@ -24,5 +26,6 @@ return [ 'worker_id' => fn () => ProcessManager::getProcessId(), Driver::class => fn () => Framework::getInstance()->getDriver(), LoggerInterface::class => fn () => logger(), + EnvironmentInterface::class => Environment::class, ], ]; diff --git a/config/global.php b/config/global.php index ce6a04b0..f1c2428b 100644 --- a/config/global.php +++ b/config/global.php @@ -3,7 +3,7 @@ declare(strict_types=1); /* 启动框架的底层驱动(原生支持 swoole、workerman 两种) */ -$config['driver'] = 'workerman'; +$config['driver'] = env('DRIVER', 'workerman'); /* 要启动的服务器监听端口及协议 */ $config['servers'] = [ @@ -22,14 +22,14 @@ $config['servers'] = [ /* Workerman 驱动相关配置 */ $config['workerman_options'] = [ - 'worker_num' => 1, // 如果你只有一个 OneBot 实例连接到框架并且代码没有复杂的CPU密集计算,则可把这里改为1使用全局变量 + 'worker_num' => env('WORKER_NUM', 1), // 如果你只有一个 OneBot 实例连接到框架并且代码没有复杂的CPU密集计算,则可把这里改为1使用全局变量 ]; /* Swoole 驱动相关配置 */ $config['swoole_options'] = [ 'coroutine_hook_flags' => SWOOLE_HOOK_ALL & (~SWOOLE_HOOK_CURL), // 协程 Hook 内容 'swoole_set' => [ - 'worker_num' => 1, // 如果你只有一个 OneBot 实例连接到框架并且代码没有复杂的CPU密集计算,则可把这里改为1使用全局变量 + 'worker_num' => env('WORKER_NUM', 1), // 如果你只有一个 OneBot 实例连接到框架并且代码没有复杂的CPU密集计算,则可把这里改为1使用全局变量 'dispatch_mode' => 2, // 包分配原则,见 https://wiki.swoole.com/#/server/setting?id=dispatch_mode 'max_coroutine' => 300000, // 允许最大的协程数 'max_wait_time' => 5, // 安全退出模式下允许等待 Worker 的最长秒数 @@ -51,7 +51,7 @@ $config['runtime'] = [ ], 'namespace' => [], ], - 'timezone' => 'Asia/Shanghai', + 'timezone' => env('TIMEZONE', 'Asia/Shanghai'), ]; /* 允许加载插件形式 */ diff --git a/src/Globals/global_functions.php b/src/Globals/global_functions.php index 432b3c3b..8b3444d4 100644 --- a/src/Globals/global_functions.php +++ b/src/Globals/global_functions.php @@ -7,6 +7,7 @@ use OneBot\Driver\Coroutine\CoroutineInterface; use OneBot\Driver\Process\ExecutionResult; use OneBot\V12\Object\MessageSegment; use Psr\Log\LoggerInterface; +use ZM\Config\Environment; use ZM\Config\ZMConfig; use ZM\Container\ContainerHolder; use ZM\Logger\ConsoleLogger; @@ -268,3 +269,12 @@ function kv(string $name = ''): Psr\SimpleCache\CacheInterface /* @phpstan-ignore-next-line */ return is_a($kv_class, KVInterface::class, true) ? $kv_class::open($name) : new $kv_class($name); } + +/** + * 获取环境变量 + */ +function env(string $key, mixed $default = null): mixed +{ + // TODO: 重新思考容器绑定的加载方式,从而在此处使用 interface + return resolve(Environment::class)->get($key, $default); +} diff --git a/src/ZM/Bootstrap/LoadConfiguration.php b/src/ZM/Bootstrap/LoadConfiguration.php index a67cf330..44b9ea57 100644 --- a/src/ZM/Bootstrap/LoadConfiguration.php +++ b/src/ZM/Bootstrap/LoadConfiguration.php @@ -4,13 +4,20 @@ declare(strict_types=1); namespace ZM\Bootstrap; +use Dotenv\Dotenv; use OneBot\Driver\Workerman\Worker; +use ZM\Config\Environment; +use ZM\Config\EnvironmentInterface; use ZM\Config\ZMConfig; class LoadConfiguration { public function bootstrap(array $config): void { + // TODO: 重新思考容器绑定的加载方式,从而在此处使用 interface + $env = resolve(Environment::class); + $this->loadEnvVariables($env); + $config_i = config(); $config_i->addConfigPath($this->getConfigDir($config)); $config_i->setEnvironment($this->getConfigEnvironment($config)); @@ -68,4 +75,20 @@ class LoadConfiguration } } } + + private function loadEnvVariables(EnvironmentInterface $env): void + { + $dotenv_path = $env->get('DOTENV_PATH', SOURCE_ROOT_DIR . '/.env'); + + if (!file_exists($dotenv_path)) { + return; + } + + $path = dirname($dotenv_path); + $file = basename($dotenv_path); + + foreach (Dotenv::createImmutable($path, $file)->load() as $key => $value) { + $env->set($key, $value); + } + } } diff --git a/src/ZM/Config/Environment.php b/src/ZM/Config/Environment.php new file mode 100644 index 00000000..d78de144 --- /dev/null +++ b/src/ZM/Config/Environment.php @@ -0,0 +1,82 @@ + true, + '(true)' => true, + 'false' => false, + '(false)' => false, + 'null' => null, + '(null)' => null, + 'empty' => '', + ]; + + private array $values; + + /** + * @param array $values 额外的环境变量,优先级高于系统环境变量 + * @param bool $overwrite 是否允许后续 set() 覆盖已有的环境变量 + */ + public function __construct( + array $values = [], + private bool $overwrite = false + ) { + $this->values = $values + $_ENV + $_SERVER; + } + + /** + * {@inheritdoc} + */ + public function set(string $name, mixed $value): self + { + if (array_key_exists($name, $this->values) && !$this->overwrite) { + // 如不允许覆盖已有的环境变量,则不做任何操作 + return $this; + } + + $this->values[$name] = $_ENV[$name] = $value; + putenv("{$name}={$value}"); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function get(string $name, mixed $default = null): mixed + { + if (isset($this->values[$name])) { + return $this->normalize($this->values[$name]); + } + + return $default; + } + + /** + * {@inheritdoc} + */ + public function getAll(): array + { + $result = []; + + foreach ($this->values as $key => $value) { + $result[$key] = $this->normalize($value); + } + + return $result; + } + + protected function normalize(mixed $value): mixed + { + if (!is_string($value)) { + return $value; + } + + return self::VALUE_MAP[strtolower($value)] ?? $value; + } +} diff --git a/src/ZM/Config/EnvironmentInterface.php b/src/ZM/Config/EnvironmentInterface.php new file mode 100644 index 00000000..368601ba --- /dev/null +++ b/src/ZM/Config/EnvironmentInterface.php @@ -0,0 +1,23 @@ + Date: Sun, 15 Jan 2023 13:31:52 +0000 Subject: [PATCH 2/3] update api docs --- .../public/doxy/_environment_8php.html | 122 ++++++ .../public/doxy/_environment_8php.js | 4 + .../doxy/_environment_interface_8php.html | 122 ++++++ .../doxy/_environment_interface_8php.js | 4 + docs/.vuepress/public/doxy/annotated.html | 4 +- docs/.vuepress/public/doxy/annotated_dup.js | 2 + ..._1_1_bootstrap_1_1_load_configuration.html | 2 +- ...03620d77e45c7193225e63beee746b5_cgraph.map | 6 +- ...03620d77e45c7193225e63beee746b5_cgraph.md5 | 2 +- ...03620d77e45c7193225e63beee746b5_cgraph.svg | 48 ++- .../class_z_m_1_1_config_1_1_environment.html | 306 +++++++++++++++ .../class_z_m_1_1_config_1_1_environment.js | 8 + ..._1_config_1_1_environment__coll__graph.map | 4 + ..._1_config_1_1_environment__coll__graph.md5 | 1 + ..._1_config_1_1_environment__coll__graph.svg | 36 ++ ...config_1_1_environment__inherit__graph.map | 4 + ...config_1_1_environment__inherit__graph.md5 | 1 + ...config_1_1_environment__inherit__graph.svg | 36 ++ ...2cbfcd940bd1ddbe01050de175ab18b_cgraph.map | 4 + ...2cbfcd940bd1ddbe01050de175ab18b_cgraph.md5 | 1 + ...2cbfcd940bd1ddbe01050de175ab18b_cgraph.svg | 36 ++ ...a0d5b303383fb5b1fabb5fd01cd3800_cgraph.map | 4 + ...a0d5b303383fb5b1fabb5fd01cd3800_cgraph.md5 | 1 + ...a0d5b303383fb5b1fabb5fd01cd3800_cgraph.svg | 36 ++ .../public/doxy/class_z_m_1_1_framework.html | 4 +- docs/.vuepress/public/doxy/classes.html | 2 +- .../dir_5abd0a68aff9d088458f1faaa8b2e668.html | 4 + .../dir_5abd0a68aff9d088458f1faaa8b2e668.js | 2 + docs/.vuepress/public/doxy/files.html | 4 +- docs/.vuepress/public/doxy/functions__.html | 2 +- docs/.vuepress/public/doxy/functions_dup.js | 1 + .../.vuepress/public/doxy/functions_func.html | 2 +- docs/.vuepress/public/doxy/functions_func.js | 1 + .../public/doxy/functions_func_g.html | 3 +- .../public/doxy/functions_func_n.html | 109 ++++++ .../public/doxy/functions_func_s.html | 2 +- docs/.vuepress/public/doxy/functions_g.html | 3 +- docs/.vuepress/public/doxy/functions_n.html | 109 ++++++ docs/.vuepress/public/doxy/functions_s.html | 2 +- .../public/doxy/global__functions_8php.html | 37 ++ .../public/doxy/global__functions_8php.js | 1 + ...249520bbbb558ac0e1928446ea2c0ca_cgraph.map | 5 + ...249520bbbb558ac0e1928446ea2c0ca_cgraph.md5 | 1 + ...249520bbbb558ac0e1928446ea2c0ca_cgraph.svg | 51 +++ docs/.vuepress/public/doxy/globals.html | 1 + docs/.vuepress/public/doxy/globals_func.html | 1 + docs/.vuepress/public/doxy/hierarchy.html | 244 ++++++------ docs/.vuepress/public/doxy/hierarchy.js | 3 + .../public/doxy/inherit_graph_22.map | 23 +- .../public/doxy/inherit_graph_22.md5 | 2 +- .../public/doxy/inherit_graph_22.svg | 349 +----------------- .../public/doxy/inherit_graph_23.map | 23 +- .../public/doxy/inherit_graph_23.md5 | 2 +- .../public/doxy/inherit_graph_23.svg | 349 +++++++++++++++++- .../public/doxy/inherit_graph_24.map | 15 +- .../public/doxy/inherit_graph_24.md5 | 2 +- .../public/doxy/inherit_graph_24.svg | 185 +--------- .../public/doxy/inherit_graph_25.map | 15 +- .../public/doxy/inherit_graph_25.md5 | 2 +- .../public/doxy/inherit_graph_25.svg | 185 +++++++++- .../public/doxy/inherit_graph_26.map | 3 +- .../public/doxy/inherit_graph_26.md5 | 2 +- .../public/doxy/inherit_graph_26.svg | 25 +- .../public/doxy/inherit_graph_27.map | 2 +- .../public/doxy/inherit_graph_27.md5 | 2 +- .../public/doxy/inherit_graph_27.svg | 10 +- .../public/doxy/inherit_graph_28.map | 2 +- .../public/doxy/inherit_graph_28.md5 | 2 +- .../public/doxy/inherit_graph_28.svg | 4 +- .../public/doxy/inherit_graph_29.map | 2 +- .../public/doxy/inherit_graph_29.md5 | 2 +- .../public/doxy/inherit_graph_29.svg | 10 +- .../public/doxy/inherit_graph_30.map | 2 +- .../public/doxy/inherit_graph_30.md5 | 2 +- .../public/doxy/inherit_graph_30.svg | 10 +- .../public/doxy/inherit_graph_31.map | 2 +- .../public/doxy/inherit_graph_31.md5 | 2 +- .../public/doxy/inherit_graph_31.svg | 10 +- .../public/doxy/inherit_graph_32.map | 2 +- .../public/doxy/inherit_graph_32.md5 | 2 +- .../public/doxy/inherit_graph_32.svg | 10 +- .../public/doxy/inherit_graph_33.map | 5 +- .../public/doxy/inherit_graph_33.md5 | 2 +- .../public/doxy/inherit_graph_33.svg | 63 +--- .../public/doxy/inherit_graph_34.map | 5 +- .../public/doxy/inherit_graph_34.md5 | 2 +- .../public/doxy/inherit_graph_34.svg | 63 +++- .../public/doxy/inherit_graph_35.map | 2 +- .../public/doxy/inherit_graph_35.md5 | 2 +- .../public/doxy/inherit_graph_35.svg | 10 +- .../public/doxy/inherit_graph_36.map | 2 +- .../public/doxy/inherit_graph_36.md5 | 2 +- .../public/doxy/inherit_graph_36.svg | 10 +- .../public/doxy/inherit_graph_37.map | 2 +- .../public/doxy/inherit_graph_37.md5 | 2 +- .../public/doxy/inherit_graph_37.svg | 10 +- .../public/doxy/inherit_graph_38.map | 2 +- .../public/doxy/inherit_graph_38.md5 | 2 +- .../public/doxy/inherit_graph_38.svg | 10 +- .../public/doxy/inherit_graph_39.map | 2 +- .../public/doxy/inherit_graph_39.md5 | 2 +- .../public/doxy/inherit_graph_39.svg | 10 +- .../public/doxy/inherit_graph_40.map | 4 +- .../public/doxy/inherit_graph_40.md5 | 2 +- .../public/doxy/inherit_graph_40.svg | 42 +-- .../public/doxy/inherit_graph_41.map | 4 +- .../public/doxy/inherit_graph_41.md5 | 2 +- .../public/doxy/inherit_graph_41.svg | 42 ++- .../public/doxy/inherit_graph_42.map | 2 +- .../public/doxy/inherit_graph_42.md5 | 2 +- .../public/doxy/inherit_graph_42.svg | 10 +- .../public/doxy/inherit_graph_43.map | 2 +- .../public/doxy/inherit_graph_43.md5 | 2 +- .../public/doxy/inherit_graph_43.svg | 10 +- .../public/doxy/inherit_graph_44.map | 2 +- .../public/doxy/inherit_graph_44.md5 | 2 +- .../public/doxy/inherit_graph_44.svg | 10 +- .../public/doxy/inherit_graph_45.map | 2 +- .../public/doxy/inherit_graph_45.md5 | 2 +- .../public/doxy/inherit_graph_45.svg | 10 +- .../public/doxy/inherit_graph_46.map | 2 +- .../public/doxy/inherit_graph_46.md5 | 2 +- .../public/doxy/inherit_graph_46.svg | 10 +- .../public/doxy/inherit_graph_47.map | 2 +- .../public/doxy/inherit_graph_47.md5 | 2 +- .../public/doxy/inherit_graph_47.svg | 10 +- .../public/doxy/inherit_graph_48.map | 3 +- .../public/doxy/inherit_graph_48.md5 | 2 +- .../public/doxy/inherit_graph_48.svg | 25 +- .../public/doxy/inherit_graph_49.map | 4 +- .../public/doxy/inherit_graph_49.md5 | 2 +- .../public/doxy/inherit_graph_49.svg | 18 +- .../public/doxy/inherit_graph_50.map | 3 +- .../public/doxy/inherit_graph_50.md5 | 2 +- .../public/doxy/inherit_graph_50.svg | 25 +- .../public/doxy/inherit_graph_51.map | 2 +- .../public/doxy/inherit_graph_51.md5 | 2 +- .../public/doxy/inherit_graph_51.svg | 10 +- .../public/doxy/inherit_graph_52.map | 2 +- .../public/doxy/inherit_graph_52.md5 | 2 +- .../public/doxy/inherit_graph_52.svg | 10 +- .../public/doxy/inherit_graph_53.map | 2 +- .../public/doxy/inherit_graph_53.md5 | 2 +- .../public/doxy/inherit_graph_53.svg | 10 +- .../public/doxy/inherit_graph_54.map | 2 +- .../public/doxy/inherit_graph_54.md5 | 2 +- .../public/doxy/inherit_graph_54.svg | 10 +- .../public/doxy/inherit_graph_55.map | 2 +- .../public/doxy/inherit_graph_55.md5 | 2 +- .../public/doxy/inherit_graph_55.svg | 10 +- .../public/doxy/inherit_graph_56.map | 2 +- .../public/doxy/inherit_graph_56.md5 | 2 +- .../public/doxy/inherit_graph_56.svg | 10 +- .../public/doxy/inherit_graph_57.map | 2 +- .../public/doxy/inherit_graph_57.md5 | 2 +- .../public/doxy/inherit_graph_57.svg | 10 +- .../public/doxy/inherit_graph_58.map | 2 +- .../public/doxy/inherit_graph_58.md5 | 2 +- .../public/doxy/inherit_graph_58.svg | 10 +- .../public/doxy/inherit_graph_59.map | 2 +- .../public/doxy/inherit_graph_59.md5 | 2 +- .../public/doxy/inherit_graph_59.svg | 10 +- .../public/doxy/inherit_graph_60.map | 3 +- .../public/doxy/inherit_graph_60.md5 | 2 +- .../public/doxy/inherit_graph_60.svg | 25 +- .../public/doxy/inherit_graph_61.map | 4 +- .../public/doxy/inherit_graph_61.md5 | 2 +- .../public/doxy/inherit_graph_61.svg | 18 +- .../public/doxy/inherit_graph_62.map | 3 +- .../public/doxy/inherit_graph_62.md5 | 2 +- .../public/doxy/inherit_graph_62.svg | 25 +- .../public/doxy/inherit_graph_63.map | 2 +- .../public/doxy/inherit_graph_63.md5 | 2 +- .../public/doxy/inherit_graph_63.svg | 10 +- .../public/doxy/inherit_graph_64.map | 2 +- .../public/doxy/inherit_graph_64.md5 | 2 +- .../public/doxy/inherit_graph_64.svg | 10 +- .../public/doxy/inherit_graph_65.map | 2 +- .../public/doxy/inherit_graph_65.md5 | 2 +- .../public/doxy/inherit_graph_65.svg | 10 +- .../public/doxy/inherit_graph_66.map | 5 +- .../public/doxy/inherit_graph_66.md5 | 2 +- .../public/doxy/inherit_graph_66.svg | 57 +-- .../public/doxy/inherit_graph_67.map | 5 +- .../public/doxy/inherit_graph_67.md5 | 2 +- .../public/doxy/inherit_graph_67.svg | 57 ++- .../public/doxy/inherit_graph_68.map | 2 +- .../public/doxy/inherit_graph_68.md5 | 2 +- .../public/doxy/inherit_graph_68.svg | 10 +- .../public/doxy/inherit_graph_69.map | 3 + .../public/doxy/inherit_graph_69.md5 | 1 + .../public/doxy/inherit_graph_69.svg | 21 ++ docs/.vuepress/public/doxy/inherits.html | 94 ++--- ..._1_1_config_1_1_environment_interface.html | 212 +++++++++++ ..._m_1_1_config_1_1_environment_interface.js | 6 + ..._environment_interface__inherit__graph.map | 4 + ..._environment_interface__inherit__graph.md5 | 1 + ..._environment_interface__inherit__graph.svg | 36 ++ docs/.vuepress/public/doxy/menudata.js | 2 + .../public/doxy/namespace_z_m_1_1_config.html | 4 + .../public/doxy/namespace_z_m_1_1_config.js | 2 + docs/.vuepress/public/doxy/namespaces.html | 4 +- docs/.vuepress/public/doxy/navtreedata.js | 10 +- docs/.vuepress/public/doxy/navtreeindex0.js | 66 ++-- docs/.vuepress/public/doxy/navtreeindex1.js | 184 ++++----- docs/.vuepress/public/doxy/navtreeindex2.js | 138 +++---- docs/.vuepress/public/doxy/navtreeindex3.js | 162 ++++---- docs/.vuepress/public/doxy/navtreeindex4.js | 158 ++++---- docs/.vuepress/public/doxy/navtreeindex5.js | 27 +- docs/.vuepress/public/doxy/search/all_1.js | 2 +- docs/.vuepress/public/doxy/search/all_13.js | 4 +- docs/.vuepress/public/doxy/search/all_6.js | 35 +- docs/.vuepress/public/doxy/search/all_8.js | 145 ++++---- docs/.vuepress/public/doxy/search/all_e.js | 3 +- .../.vuepress/public/doxy/search/classes_4.js | 8 +- docs/.vuepress/public/doxy/search/files_4.js | 8 +- .../public/doxy/search/functions_0.js | 2 +- .../public/doxy/search/functions_10.js | 26 +- .../public/doxy/search/functions_11.js | 55 ++- .../public/doxy/search/functions_12.js | 36 +- .../public/doxy/search/functions_13.js | 9 +- .../public/doxy/search/functions_14.js | 7 +- .../public/doxy/search/functions_15.js | 6 +- .../public/doxy/search/functions_16.js | 10 +- .../public/doxy/search/functions_17.js | 8 + .../public/doxy/search/functions_5.js | 19 +- .../public/doxy/search/functions_7.js | 137 +++---- .../public/doxy/search/functions_d.js | 19 +- .../public/doxy/search/functions_e.js | 27 +- .../public/doxy/search/functions_f.js | 13 +- .../public/doxy/search/searchdata.js | 2 +- 231 files changed, 3342 insertions(+), 1890 deletions(-) create mode 100755 docs/.vuepress/public/doxy/_environment_8php.html create mode 100755 docs/.vuepress/public/doxy/_environment_8php.js create mode 100755 docs/.vuepress/public/doxy/_environment_interface_8php.html create mode 100755 docs/.vuepress/public/doxy/_environment_interface_8php.js create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment.html create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment.js create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.map create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.md5 create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.svg create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.map create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.md5 create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.svg create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.map create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.md5 create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.svg create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.map create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.md5 create mode 100755 docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.svg create mode 100755 docs/.vuepress/public/doxy/functions_func_n.html create mode 100755 docs/.vuepress/public/doxy/functions_n.html create mode 100755 docs/.vuepress/public/doxy/global__functions_8php_ae249520bbbb558ac0e1928446ea2c0ca_cgraph.map create mode 100755 docs/.vuepress/public/doxy/global__functions_8php_ae249520bbbb558ac0e1928446ea2c0ca_cgraph.md5 create mode 100755 docs/.vuepress/public/doxy/global__functions_8php_ae249520bbbb558ac0e1928446ea2c0ca_cgraph.svg create mode 100755 docs/.vuepress/public/doxy/inherit_graph_69.map create mode 100755 docs/.vuepress/public/doxy/inherit_graph_69.md5 create mode 100755 docs/.vuepress/public/doxy/inherit_graph_69.svg create mode 100755 docs/.vuepress/public/doxy/interface_z_m_1_1_config_1_1_environment_interface.html create mode 100755 docs/.vuepress/public/doxy/interface_z_m_1_1_config_1_1_environment_interface.js create mode 100755 docs/.vuepress/public/doxy/interface_z_m_1_1_config_1_1_environment_interface__inherit__graph.map create mode 100755 docs/.vuepress/public/doxy/interface_z_m_1_1_config_1_1_environment_interface__inherit__graph.md5 create mode 100755 docs/.vuepress/public/doxy/interface_z_m_1_1_config_1_1_environment_interface__inherit__graph.svg create mode 100755 docs/.vuepress/public/doxy/search/functions_17.js diff --git a/docs/.vuepress/public/doxy/_environment_8php.html b/docs/.vuepress/public/doxy/_environment_8php.html new file mode 100755 index 00000000..fd4be785 --- /dev/null +++ b/docs/.vuepress/public/doxy/_environment_8php.html @@ -0,0 +1,122 @@ + + + + + + + +Zhamao Framework: src/ZM/Config/Environment.php 文件参考 + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Zhamao Framework 3.0.0-beta6 +
+
A high-performance chatbot + web framework
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
载入中...
+
搜索中...
+
未找到
+
+
+
+
+ +
+ +
Environment.php 文件参考
+
+
+ + + + +

+结构体

class  Environment
 
+ + + +

+命名空间

namespace  ZM\Config
 
+
+
+ + + + diff --git a/docs/.vuepress/public/doxy/_environment_8php.js b/docs/.vuepress/public/doxy/_environment_8php.js new file mode 100755 index 00000000..0927f4e6 --- /dev/null +++ b/docs/.vuepress/public/doxy/_environment_8php.js @@ -0,0 +1,4 @@ +var _environment_8php = +[ + [ "Environment", "class_z_m_1_1_config_1_1_environment.html", "class_z_m_1_1_config_1_1_environment" ] +]; \ No newline at end of file diff --git a/docs/.vuepress/public/doxy/_environment_interface_8php.html b/docs/.vuepress/public/doxy/_environment_interface_8php.html new file mode 100755 index 00000000..cdb038bf --- /dev/null +++ b/docs/.vuepress/public/doxy/_environment_interface_8php.html @@ -0,0 +1,122 @@ + + + + + + + +Zhamao Framework: src/ZM/Config/EnvironmentInterface.php 文件参考 + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Zhamao Framework 3.0.0-beta6 +
+
A high-performance chatbot + web framework
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
载入中...
+
搜索中...
+
未找到
+
+
+
+
+ +
+ +
EnvironmentInterface.php 文件参考
+
+
+ + + + +

+结构体

interface  EnvironmentInterface
 
+ + + +

+命名空间

namespace  ZM\Config
 
+
+
+ + + + diff --git a/docs/.vuepress/public/doxy/_environment_interface_8php.js b/docs/.vuepress/public/doxy/_environment_interface_8php.js new file mode 100755 index 00000000..60acf3a7 --- /dev/null +++ b/docs/.vuepress/public/doxy/_environment_interface_8php.js @@ -0,0 +1,4 @@ +var _environment_interface_8php = +[ + [ "EnvironmentInterface", "interface_z_m_1_1_config_1_1_environment_interface.html", "interface_z_m_1_1_config_1_1_environment_interface" ] +]; \ No newline at end of file diff --git a/docs/.vuepress/public/doxy/annotated.html b/docs/.vuepress/public/doxy/annotated.html index 71e47fa2..02efb7e2 100755 --- a/docs/.vuepress/public/doxy/annotated.html +++ b/docs/.vuepress/public/doxy/annotated.html @@ -158,7 +158,9 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();  CReplCommand  NConfig  CConfigTracer - CZMConfig + CEnvironment + CEnvironmentInterface + CZMConfig  NContainer  CAliasDefinitionSource  CContainerBindingListener diff --git a/docs/.vuepress/public/doxy/annotated_dup.js b/docs/.vuepress/public/doxy/annotated_dup.js index a168875e..0ff6c5f4 100755 --- a/docs/.vuepress/public/doxy/annotated_dup.js +++ b/docs/.vuepress/public/doxy/annotated_dup.js @@ -75,6 +75,8 @@ var annotated_dup = ] ], [ "Config", "namespace_z_m_1_1_config.html", [ [ "ConfigTracer", "class_z_m_1_1_config_1_1_config_tracer.html", "class_z_m_1_1_config_1_1_config_tracer" ], + [ "Environment", "class_z_m_1_1_config_1_1_environment.html", "class_z_m_1_1_config_1_1_environment" ], + [ "EnvironmentInterface", "interface_z_m_1_1_config_1_1_environment_interface.html", "interface_z_m_1_1_config_1_1_environment_interface" ], [ "ZMConfig", "class_z_m_1_1_config_1_1_z_m_config.html", "class_z_m_1_1_config_1_1_z_m_config" ] ] ], [ "Container", "namespace_z_m_1_1_container.html", [ diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration.html b/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration.html index 78867567..f15886c7 100755 --- a/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration.html +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration.html @@ -122,7 +122,7 @@ Public 成员函数
函数调用图:
-
+
diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.map b/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.map index 61105410..e19805f3 100755 --- a/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.map +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.map @@ -1,4 +1,6 @@ - - + + + + diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.md5 b/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.md5 index 0894be93..7a273d74 100755 --- a/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.md5 +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.md5 @@ -1 +1 @@ -7b5d09f83a4bfca6e4ea4c3374e4eb77 \ No newline at end of file +d0c386cfec6c31aa192ea46c571bfb54 \ No newline at end of file diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.svg b/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.svg index 20bb0123..9093c6aa 100755 --- a/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.svg +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_bootstrap_1_1_load_configuration_a703620d77e45c7193225e63beee746b5_cgraph.svg @@ -4,16 +4,16 @@ - - + + bootstrap Node1 - -bootstrap + +bootstrap @@ -21,16 +21,46 @@ Node2 - -config + +config Node1->Node2 - - + + + + + +Node3 + + +resolve + + + + + +Node1->Node3 + + + + + +Node4 + + +container + + + + + +Node3->Node4 + + diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment.html b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment.html new file mode 100755 index 00000000..0b7ec528 --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment.html @@ -0,0 +1,306 @@ + + + + + + + +Zhamao Framework: Environment类 参考 + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Zhamao Framework 3.0.0-beta6 +
+
A high-performance chatbot + web framework
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
载入中...
+
搜索中...
+
未找到
+
+
+
+
+ +
+ +
Environment类 参考
+
+
+
+类 Environment 继承关系图:
+
+
+
+
[图例]
+
+Environment 的协作图:
+
+
+
+
[图例]
+ + + + + + + + + + + + + + + + +

+Public 成员函数

 __construct (array $values=[], private bool $overwrite=false)
 
 set (string $name, mixed $value)
 
 get (string $name, mixed $default=null)
 
 getAll ()
 
 set (string $name, mixed $value)
 
 get (string $name, mixed $default=null)
 
 getAll ()
 
+ + + +

+Protected 成员函数

 normalize (mixed $value)
 
+

构造及析构函数说明

+ +

◆ __construct()

+ +
+
+ + + + + + + + + + + + + + + + + + +
__construct (array $values = [],
private bool $overwrite = false 
)
+
+
参数
+ + + +
array$values额外的环境变量,优先级高于系统环境变量
bool$overwrite是否允许后续 set() 覆盖已有的环境变量
+
+
+ +
+
+

成员函数说明

+ +

◆ get()

+ +
+
+ + + + + + + + + + + + + + + + + + +
get (string $name,
mixed $default = null 
)
+
+

{获取环境变量}

+ +

实现了 EnvironmentInterface.

+
+函数调用图:
+
+
+
+
+ +
+
+ +

◆ getAll()

+ +
+
+ + + + + + + +
getAll ()
+
+

{获取所有环境变量}

+ +

实现了 EnvironmentInterface.

+
+函数调用图:
+
+
+
+
+ +
+
+ +

◆ normalize()

+ +
+
+ + + + + +
+ + + + + + + + +
normalize (mixed $value)
+
+protected
+
+ +
+
+ +

◆ set()

+ +
+
+ + + + + + + + + + + + + + + + + + +
set (string $name,
mixed $value 
)
+
+

{设置环境变量}

+ +

实现了 EnvironmentInterface.

+ +
+
+
该类的文档由以下文件生成: +
+
+ + + + diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment.js b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment.js new file mode 100755 index 00000000..549ef29f --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment.js @@ -0,0 +1,8 @@ +var class_z_m_1_1_config_1_1_environment = +[ + [ "__construct", "class_z_m_1_1_config_1_1_environment.html#a48e4a9e82250a1e4ad02074d20b13d65", null ], + [ "get", "class_z_m_1_1_config_1_1_environment.html#a52cbfcd940bd1ddbe01050de175ab18b", null ], + [ "getAll", "class_z_m_1_1_config_1_1_environment.html#aba0d5b303383fb5b1fabb5fd01cd3800", null ], + [ "normalize", "class_z_m_1_1_config_1_1_environment.html#a15cbe435d84fce00d9f4906dc7401f89", null ], + [ "set", "class_z_m_1_1_config_1_1_environment.html#ae4b433c6e2e629ece7396aea42dd9d65", null ] +]; \ No newline at end of file diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.map b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.map new file mode 100755 index 00000000..29dc8ac2 --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.md5 b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.md5 new file mode 100755 index 00000000..1bf77f47 --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.md5 @@ -0,0 +1 @@ +83f5b8fc996a6341bddc0482fdd23a94 \ No newline at end of file diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.svg b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.svg new file mode 100755 index 00000000..e325c4b8 --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__coll__graph.svg @@ -0,0 +1,36 @@ + + + + + + +Environment + + +Node1 + + +Environment + + + + + +Node2 + + +EnvironmentInterface + + + + + +Node2->Node1 + + + + + diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.map b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.map new file mode 100755 index 00000000..29dc8ac2 --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.md5 b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.md5 new file mode 100755 index 00000000..1bf77f47 --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.md5 @@ -0,0 +1 @@ +83f5b8fc996a6341bddc0482fdd23a94 \ No newline at end of file diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.svg b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.svg new file mode 100755 index 00000000..e325c4b8 --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment__inherit__graph.svg @@ -0,0 +1,36 @@ + + + + + + +Environment + + +Node1 + + +Environment + + + + + +Node2 + + +EnvironmentInterface + + + + + +Node2->Node1 + + + + + diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.map b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.map new file mode 100755 index 00000000..2d6ba696 --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.md5 b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.md5 new file mode 100755 index 00000000..48c62129 --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.md5 @@ -0,0 +1 @@ +c37d5474a39327d5c4163507e5e9be54 \ No newline at end of file diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.svg b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.svg new file mode 100755 index 00000000..fdafde43 --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_a52cbfcd940bd1ddbe01050de175ab18b_cgraph.svg @@ -0,0 +1,36 @@ + + + + + + +get + + +Node1 + + +get + + + + + +Node2 + + +normalize + + + + + +Node1->Node2 + + + + + diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.map b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.map new file mode 100755 index 00000000..5d1d0c0d --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.md5 b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.md5 new file mode 100755 index 00000000..4955df76 --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.md5 @@ -0,0 +1 @@ +c67b35c2728e05ebce607c4fbb9c694a \ No newline at end of file diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.svg b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.svg new file mode 100755 index 00000000..704a795b --- /dev/null +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_config_1_1_environment_aba0d5b303383fb5b1fabb5fd01cd3800_cgraph.svg @@ -0,0 +1,36 @@ + + + + + + +getAll + + +Node1 + + +getAll + + + + + +Node2 + + +normalize + + + + + +Node1->Node2 + + + + + diff --git a/docs/.vuepress/public/doxy/class_z_m_1_1_framework.html b/docs/.vuepress/public/doxy/class_z_m_1_1_framework.html index 59fb2570..2fd6110c 100755 --- a/docs/.vuepress/public/doxy/class_z_m_1_1_framework.html +++ b/docs/.vuepress/public/doxy/class_z_m_1_1_framework.html @@ -129,7 +129,7 @@ Public 成员函数 - + @@ -485,7 +485,7 @@ Protected 属性

成员变量

const VERSION_ID = 669
const VERSION_ID = 670
 
const VERSION = '3.0.0-beta6'
 
- +
const VERSION_ID = 669const VERSION_ID = 670
diff --git a/docs/.vuepress/public/doxy/classes.html b/docs/.vuepress/public/doxy/classes.html index aae49d20..4a6e4e2d 100755 --- a/docs/.vuepress/public/doxy/classes.html +++ b/docs/.vuepress/public/doxy/classes.html @@ -111,7 +111,7 @@ $(document).ready(function(){initNavTree('classes.html',''); initResizable(); })
DBConnection (ZM\Store\Database)
DBException (ZM\Store\Database)
DBPool (ZM\Store\Database)
DBQueryBuilder (ZM\Store\Database)
DBStatement (ZM\Store\Database)
DBStatementWrapper (ZM\Store\Database)
DBWrapper (ZM\Store\Database)
E
-
EasterEgg (ZM\Utils)
ErgodicAnnotation (ZM\Annotation\Interfaces)
EventDispatcher (ZM\Event)
EventProvider (ZM\Event)
+
EasterEgg (ZM\Utils)
Environment (ZM\Config)
EnvironmentInterface (ZM\Config)
ErgodicAnnotation (ZM\Annotation\Interfaces)
EventDispatcher (ZM\Event)
EventProvider (ZM\Event)
F
FileLock (ZM\Store\Lock)
FileSystem (ZM\Store)
Framework (ZM)
diff --git a/docs/.vuepress/public/doxy/dir_5abd0a68aff9d088458f1faaa8b2e668.html b/docs/.vuepress/public/doxy/dir_5abd0a68aff9d088458f1faaa8b2e668.html index 7e6778b5..120156d9 100755 --- a/docs/.vuepress/public/doxy/dir_5abd0a68aff9d088458f1faaa8b2e668.html +++ b/docs/.vuepress/public/doxy/dir_5abd0a68aff9d088458f1faaa8b2e668.html @@ -106,6 +106,10 @@ Config 的目录依赖关系图
文件 文件  ConfigTracer.php   +文件  Environment.php +  +文件  EnvironmentInterface.php +  文件  ZMConfig.php   diff --git a/docs/.vuepress/public/doxy/dir_5abd0a68aff9d088458f1faaa8b2e668.js b/docs/.vuepress/public/doxy/dir_5abd0a68aff9d088458f1faaa8b2e668.js index ee739b07..20ac3784 100755 --- a/docs/.vuepress/public/doxy/dir_5abd0a68aff9d088458f1faaa8b2e668.js +++ b/docs/.vuepress/public/doxy/dir_5abd0a68aff9d088458f1faaa8b2e668.js @@ -1,5 +1,7 @@ var dir_5abd0a68aff9d088458f1faaa8b2e668 = [ [ "ConfigTracer.php", "_config_tracer_8php.html", "_config_tracer_8php" ], + [ "Environment.php", "_environment_8php.html", "_environment_8php" ], + [ "EnvironmentInterface.php", "_environment_interface_8php.html", "_environment_interface_8php" ], [ "ZMConfig.php", "_z_m_config_8php.html", "_z_m_config_8php" ] ]; \ No newline at end of file diff --git a/docs/.vuepress/public/doxy/files.html b/docs/.vuepress/public/doxy/files.html index 544f1448..42b24593 100755 --- a/docs/.vuepress/public/doxy/files.html +++ b/docs/.vuepress/public/doxy/files.html @@ -167,7 +167,9 @@ $(document).ready(function(){initNavTree('files.html',''); initResizable(); });  SourceLoadModeOnly.php   Config  ConfigTracer.php - ZMConfig.php + Environment.php + EnvironmentInterface.php + ZMConfig.php   Container  AliasDefinitionSource.php  ContainerBindingListener.php diff --git a/docs/.vuepress/public/doxy/functions__.html b/docs/.vuepress/public/doxy/functions__.html index 6358607e..83f5436a 100755 --- a/docs/.vuepress/public/doxy/functions__.html +++ b/docs/.vuepress/public/doxy/functions__.html @@ -95,7 +95,7 @@ $(document).ready(function(){initNavTree('functions__.html',''); initResizable()
这里列出了所有结构体和联合体的成员变量,并附带结构体或联合的详细说明:

- _ -