Explorar el Código

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

runphp hace 6 meses
padre
commit
a82b521c14
Se han modificado 1 ficheros con 8 adiciones y 1 borrados
  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();
     }