EnumCore.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace UCore\Enum;
  3. trait EnumCore
  4. {
  5. /**
  6. * 获取常量注释
  7. * @param string $key 常量名
  8. * @return string
  9. */
  10. public static function getDescription(string $key): string
  11. {
  12. return preg_replace('#[\*\s]*(^/|/$)[\*\s]*#', '', (new \ReflectionClassConstant(static::class, $key))->getDocComment());
  13. }
  14. /**
  15. * 获取 备注/描述
  16. * @return string
  17. */
  18. public function getDesc(): string
  19. {
  20. $key=$this->name;
  21. return preg_replace('#[\*\s]*(^/|/$)[\*\s]*#', '', (new \ReflectionClassConstant(static::class, $key))->getDocComment());
  22. }
  23. /**
  24. * 获取常量名和注释列表
  25. * @return array
  26. */
  27. public static function getKeyDescription(): array
  28. {
  29. $keys = self::cases();
  30. // dump($keys);
  31. $result = [];
  32. foreach ($keys as $key => $key_name) {
  33. $result[$key_name->name] = self::getDescription($key_name->name);
  34. }
  35. return $result;
  36. }
  37. /**
  38. * 获取描述=>数值
  39. * @return array
  40. */
  41. public static function getDescriptionValue(): array
  42. {
  43. $kd = self::getKeyDescription();
  44. $arr = self::toArray();
  45. $res = [];
  46. foreach ($arr as $key => $value) {
  47. $res[$kd[$key]] = $value;
  48. }
  49. return $res;
  50. }
  51. /**
  52. * 获取数值=>描述
  53. * @return array
  54. *
  55. */
  56. public static function getValueDescription(): array
  57. {
  58. $kd = self::getKeyDescription();
  59. $arr = self::toArray();
  60. // dd($kd,$arr);
  61. $res = [];
  62. foreach ($arr as $key => $value) {
  63. $res[$value] = $kd[$key];
  64. }
  65. return $res;
  66. }
  67. static public function toArray()
  68. {
  69. $keys = self::cases();
  70. $res = [];
  71. foreach ($keys as $key) {
  72. $res[$key->name] = $key->value();
  73. }
  74. return $res;
  75. }
  76. static public function keys()
  77. {
  78. $keys = self::cases();
  79. $res = [];
  80. foreach ($keys as $key) {
  81. $res[] = $key->name;
  82. }
  83. return $res;
  84. }
  85. }