SocialPlatform.php 2.5 KB

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