value; } /** * 中文展示名 */ public function label(): string { return match ($this) { self::Local => '本地存储', self::Aliyun => '阿里云 OSS', self::Qcloud => '腾讯云 COS', self::Qiniu => '七牛云', self::Huawei => '华为云 OBS', self::Aws => 'AWS S3', self::Minio => 'MinIO', self::Baidu => '百度云 BOS', }; } /** * 卡片说明文案 */ public function description(): string { return match ($this) { self::Local => '文件保存到应用服务器本地磁盘', self::Aliyun => '阿里云对象存储 OSS', self::Qcloud => '腾讯云对象存储 COS', self::Qiniu => '七牛云对象存储 Kodo', self::Huawei => '华为云对象存储 OBS', self::Aws => '亚马逊 S3 对象存储', self::Minio => 'S3 兼容的私有化对象存储', self::Baidu => '百度智能云对象存储 BOS', }; } /** * 前端卡片图标(iconify) */ public function icon(): string { return match ($this) { self::Local => 'lucide:hard-drive', self::Aliyun => 'simple-icons:alibabadotcom', self::Qcloud => 'simple-icons:tencentqq', self::Qiniu => 'lucide:cloud', self::Huawei => 'simple-icons:huawei', self::Aws => 'simple-icons:amazonaws', self::Minio => 'simple-icons:minio', self::Baidu => 'simple-icons:baidu', }; } /** * 是否需要 AccessKey / SecretKey */ public function needsSecret(): bool { return $this !== self::Local; } /** * 前端驱动选项列表(含图标,供卡片展示) */ public static function options(): array { $list = []; foreach (self::cases() as $case) { $list[] = [ 'code' => $case->code(), 'name' => $case->label(), 'label' => $case->label(), 'description' => $case->description(), 'icon' => $case->icon(), 'needs_secret' => $case->needsSecret() ? 1 : 0, ]; } return $list; } /** * 校验驱动编码是否合法 */ public static function isValid(string $code): bool { return self::tryFrom($code) !== null; } }