Przeglądaj źródła

refactor(extension): 重构扩展配置读取逻辑

- 将本地配置获取逻辑提取到独立方法 getLocalConfig
- 移除重复的数组合并和事件触发代码
- 简化 saveConfig 和 getExtensionConfigForm 方法
- 保持配置读取的一致性和可维护性
- 优化代码结构,减少冗余操作
runphp 4 miesięcy temu
rodzic
commit
45bc19e307
1 zmienionych plików z 13 dodań i 7 usunięć
  1. 13 7
      src/ExtensionManager.php

+ 13 - 7
src/ExtensionManager.php

@@ -89,7 +89,7 @@ class ExtensionManager extends Service
 
     public function saveConfig(string $extensionID, array $data): bool
     {
-        $config = array_merge(ExtensionConfig::BASE, $this->getExtension($extensionID)->getConfig());
+        $config = $this->getLocalConfig($extensionID)->toArray();
         $updateData = [];
         foreach ($config as $item) {
             if (isset($item['field'])) {
@@ -275,7 +275,7 @@ class ExtensionManager extends Service
 
     public function getExtensionConfigForm(string $extensionID): Collection
     {
-        $config = array_merge(ExtensionConfig::BASE, array_values($this->getExtension($extensionID)->getConfig()));
+        $config = $this->getLocalConfig($extensionID)->toArray();
         $extensionConfig = ExtensionConfigModel::where('extension_id', $extensionID)->column(['value', 'type',], 'key', true);
         foreach ($config as $key => &$item) {
             if (isset($item['field'])) {
@@ -299,11 +299,7 @@ class ExtensionManager extends Service
                 }
             }
         }
-        $configCollection = new Collection($config);
-        Event::trigger('after_read_extension_config', [$configCollection, $extensionID]);
-        Event::trigger('after_read_extension_config_'.$extensionID, [$configCollection]);
-
-        return $configCollection;
+        return new Collection($config);
     }
 
     public function migrations(string $id)
@@ -325,4 +321,14 @@ class ExtensionManager extends Service
             ['version', '<>', $currentVersion],
         ])->update(['version' => $currentVersion]);
     }
+
+
+    private function getLocalConfig(string $extensionID): Collection
+    {
+        $config = array_merge(ExtensionConfig::BASE, $this->getExtension($extensionID)->getConfig());
+        $configCollection = new Collection($config);
+        Event::trigger('after_read_extension_config', [$configCollection, $extensionID]);
+        Event::trigger('after_read_extension_config_' . $extensionID, $configCollection);
+        return $configCollection;
+    }
 }