'Need', self::WANT => 'Want', self::OVERFLOW => 'Overflow', }; } public static function values(): array { return array_column(self::cases(), 'value'); } /** * Get valid allocation types for this bucket type. * * @return BucketAllocationTypeEnum[] */ public function getAllowedAllocationTypes(): array { return match ($this) { self::NEED, self::WANT => [BucketAllocationTypeEnum::FIXED_LIMIT, BucketAllocationTypeEnum::PERCENTAGE], self::OVERFLOW => [BucketAllocationTypeEnum::UNLIMITED], }; } }