UserGender.php 2.1 KB

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