'无限制', self::FIRST_ORDER => '首单专享', self::NEW_USER => '新用户专享', self::SPECIFIED_CATEGORY => '指定分类', self::SPECIFIED_ITEM => '指定项目', self::SPECIFIED_AMOUNT => '满额可用', }; } /** * 获取规则的整数值 * * @return int 规则值 */ public function value(): int { return $this->value; } /** * 检查当前规则是否与指定规则相同 * * @param self $rule 要比较的规则 * @return bool 如果规则相同返回 true,否则返回 false */ public function is(self $rule): bool { return $this === $rule; } /** * 根据整数值创建对应的规则枚举实例 * * @param int $value 规则值 * @return self|null 返回对应的规则枚举实例,如果值无效则返回 null */ public static function fromValue(int $value): ?self { return match ($value) { self::UNLIMITED->value => self::UNLIMITED, self::FIRST_ORDER->value => self::FIRST_ORDER, self::NEW_USER->value => self::NEW_USER, self::SPECIFIED_CATEGORY->value => self::SPECIFIED_CATEGORY, self::SPECIFIED_ITEM->value => self::SPECIFIED_ITEM, self::SPECIFIED_AMOUNT->value => self::SPECIFIED_AMOUNT, default => null }; } /** * 获取所有规则的值数组 * * @return array 包含所有规则值的数组 */ public static function values(): array { return array_column(self::cases(), 'value'); } /** * 获取所有规则的键值对数组 * * @return array 规则值作为键,显示文本作为值的关联数组 */ public static function all(): array { return [ self::UNLIMITED->value => self::UNLIMITED->label(), self::FIRST_ORDER->value => self::FIRST_ORDER->label(), self::NEW_USER->value => self::NEW_USER->label(), self::SPECIFIED_CATEGORY->value => self::SPECIFIED_CATEGORY->label(), self::SPECIFIED_ITEM->value => self::SPECIFIED_ITEM->label(), self::SPECIFIED_AMOUNT->value => self::SPECIFIED_AMOUNT->label(), ]; } }