소스 검색

fix(sixshop-system):避免重复定义扩展的 available 方法

runphp 6 달 전
부모
커밋
a82b521c14
1개의 변경된 파일8개의 추가작업 그리고 1개의 파일을 삭제
  1. 8 1
      src/Extension.php

+ 8 - 1
src/Extension.php

@@ -42,11 +42,18 @@ class Extension extends ExtensionAbstract
         foreach (extension_name_list() as $extensionID) {
             /** @var ExtensionAbstract $extension */
             $extension = $this->autoloadService->getExtension($extensionID);
-            get_class($extension)::macro('available', function () {
+            $className = get_class($extension);
+            if (method_exists($extension, 'available')
+                || $className::hasMacro('available')
+            ) {
+                continue;
+            }
+            $className::macro('available', function () {
                 $extensionID = $this->getInfo()['id'];
                 return ExtensionModel::where('id', $extensionID)
                         ->value('status', ExtensionStatusEnum::UNINSTALLED, true) === ExtensionStatusEnum::ENABLED;
             });
+
         }
         parent::boot();
     }