TechnicianLocationType.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace App\Enums;
  3. /**
  4. * 技师定位类型枚举类
  5. */
  6. enum TechnicianLocationType: int
  7. {
  8. /**
  9. * 定位类型:当前定位
  10. */
  11. case CURRENT = 1;
  12. /**
  13. * 定位类型:常用定位
  14. */
  15. case COMMON = 2;
  16. /**
  17. * 获取类型的显示文本
  18. *
  19. * @return string 类型的中文描述
  20. */
  21. public function label(): string
  22. {
  23. return match ($this) {
  24. self::CURRENT => '当前定位',
  25. self::COMMON => '常用定位',
  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 $type 要比较的类型
  41. * @return bool 如果类型相同返回 true,否则返回 false
  42. */
  43. public function is(self $type): bool
  44. {
  45. return $this === $type;
  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::CURRENT->value => self::CURRENT,
  57. self::COMMON->value => self::COMMON,
  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::CURRENT->value => self::CURRENT->label(),
  79. self::COMMON->value => self::COMMON->label(),
  80. ];
  81. }
  82. }