This commit is contained in:
2021-05-18 10:28:04 +08:00
parent ef7efe271c
commit 0ff172def1
2 changed files with 59 additions and 19 deletions
+2 -1
View File
@@ -10,6 +10,7 @@ declare(strict_types=1);
namespace Snowflake\Abstracts; namespace Snowflake\Abstracts;
use Exception; use Exception;
use Snowflake\Core\ArrayAccess;
use Snowflake\Exception\ConfigException; use Snowflake\Exception\ConfigException;
use Snowflake\Snowflake; use Snowflake\Snowflake;
@@ -56,7 +57,7 @@ class Config extends Component
if (empty($configs)) { if (empty($configs)) {
return; return;
} }
$config->data = $configs; $config->data = ArrayAccess::merge($config->data, $configs);
} }
/** /**
+45 -6
View File
@@ -37,15 +37,54 @@ class Runtime extends Command
$runtime = storage(static::CACHE_NAME); $runtime = storage(static::CACHE_NAME);
$configs = Snowflake::app()->getConfig()->getData(); $configs = $this->configEach();
array_walk_recursive($configs, function (&$value, $key) {
if ($value instanceof \Closure) {
$value = null;
}
});
Snowflake::writeFile(storage(static::CONFIG_NAME), serialize($configs)); Snowflake::writeFile(storage(static::CONFIG_NAME), serialize($configs));
Snowflake::writeFile($runtime, serialize($annotation->getLoader())); Snowflake::writeFile($runtime, serialize($annotation->getLoader()));
} }
/**
* @return array
* @throws Exception
*/
public function configEach(): array
{
$array = [];
$configs = Snowflake::app()->getConfig();
foreach ($configs->getData() as $key => $datum) {
if ($datum instanceof \Closure) {
continue;
}
if (is_array($datum)) {
$array[$key] = $this->arrayEach($datum);
} else {
$array[$key] = $datum;
}
}
return $array;
}
/**
* @param array $value
* @return array
*/
private function arrayEach(array $value): array
{
$array = [];
foreach ($value as $key => $item) {
if ($item instanceof \Closure) {
continue;
}
if (is_array($item)) {
$array[$key] = $this->arrayEach($item);
} else {
$array[$key] = $item;
}
}
return $array;
}
} }