isBooted) { return; } foreach (extension_name_list() as $extensionID) { /** @var ExtensionAbstract $extension */ $extension = $this->autoloadService->getExtension($extensionID); $className = get_class($extension); if (method_exists($extension, 'available') || $className::hasMacro('available') ) { continue; } $className::macro('available', function () { $extensionID = $this->getInfo()['id']; try { $info = app()->make(ExtensionManager::class)->getInfo($extensionID); } catch (PDOException) { // 新装系统的时候system扩展还未安装 return false; } return $info->status === ExtensionStatusEnum::ENABLED; }); } parent::boot(); } public function available() { return true; } protected function getBaseDir(): string { return dirname(__DIR__); } }