OrderSource.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace App\Enums;
  3. /**
  4. * 订单来源枚举类
  5. */
  6. enum OrderSource: int
  7. {
  8. /**
  9. * 订单来源:平台
  10. */
  11. case PLATFORM = 1;
  12. /**
  13. * 订单来源:店铺
  14. */
  15. case SHOP = 2;
  16. /**
  17. * 获取来源的显示文本
  18. *
  19. * @return string 来源的中文描述
  20. */
  21. public function label(): string
  22. {
  23. return match ($this) {
  24. self::PLATFORM => '平台',
  25. self::SHOP => '店铺',
  26. };
  27. }
  28. /**
  29. * 获取来源的整数值
  30. *
  31. * @return int 来源值
  32. */
  33. public function value(): int
  34. {
  35. return $this->value;
  36. }
  37. /**
  38. * 检查当前来源是否与指定来源相同
  39. *
  40. * @param self $source 要比较的来源
  41. * @return bool 如果来源相同返回 true,否则返回 false
  42. */
  43. public function is(self $source): bool
  44. {
  45. return $this === $source;
  46. }
  47. /**
  48. * 根据整数值创建对应的来源枚举实例
  49. *
  50. * @param int $value 来源值
  51. * @return self|null 返回对应的来源枚举实例,如果值无效则返回 null
  52. */
  53. public static function fromValue(int $value): ?self
  54. {
  55. return match ($value) {
  56. self::PLATFORM->value => self::PLATFORM,
  57. self::SHOP->value => self::SHOP,
  58. default => null
  59. };
  60. }
  61. /**
  62. * 获取所有来源的值数组
  63. *
  64. * @return array 包含所有来源值的数组
  65. */
  66. public static function values(): array
  67. {
  68. return array_column(self::cases(), 'value');
  69. }
  70. /**
  71. * 获取所有来源的键值对数组
  72. *
  73. * @return array 来源值作为键,显示文本作为值的关联数组
  74. */
  75. public static function all(): array
  76. {
  77. return [
  78. self::PLATFORM->value => self::PLATFORM->label(),
  79. self::SHOP->value => self::SHOP->label(),
  80. ];
  81. }
  82. }