From 5d8a1deb35e876f76f4a3e9bb5625975322e9959 Mon Sep 17 00:00:00 2001 From: sunxyw Date: Mon, 22 Aug 2022 17:15:10 +0800 Subject: [PATCH] add yaml and toml config support --- src/ZM/Config/RefactoredConfig.php | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/ZM/Config/RefactoredConfig.php b/src/ZM/Config/RefactoredConfig.php index 24e2f3f1..139e0c77 100644 --- a/src/ZM/Config/RefactoredConfig.php +++ b/src/ZM/Config/RefactoredConfig.php @@ -274,10 +274,26 @@ class RefactoredConfig break; case 'yaml': case 'yml': - // TODO: 实现yaml解析 + $yaml_parser_class = 'Symfony\Component\Yaml\Yaml'; + if (!class_exists($yaml_parser_class)) { + throw ConfigException::loadConfigFailed($path, 'YAML 解析器未安装'); + } + try { + $config = $yaml_parser_class::parse($content); + } catch (\RuntimeException $e) { + throw ConfigException::loadConfigFailed($path, $e->getMessage()); + } break; case 'toml': - // TODO: 实现toml解析 + $toml_parser_class = 'Yosymfony\Toml\Toml'; + if (!class_exists($toml_parser_class)) { + throw ConfigException::loadConfigFailed($path, 'TOML 解析器未安装'); + } + try { + $config = $toml_parser_class::parse($content); + } catch (\RuntimeException $e) { + throw ConfigException::loadConfigFailed($path, $e->getMessage()); + } break; default: throw ConfigException::unsupportedFileType($path);