CONDITION_OPERATOR.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace App\Module\Game\Enums;
  3. use UCore\Enum\EnumCore;
  4. use UCore\Enum\EnumToInt;
  5. /**
  6. * 条件比较运算符枚举
  7. */
  8. enum CONDITION_OPERATOR: int
  9. {
  10. use EnumCore, EnumToInt;
  11. /**
  12. * 等于
  13. */
  14. case EQUAL = 1;
  15. /**
  16. * 不等于
  17. */
  18. case NOT_EQUAL = 2;
  19. /**
  20. * 大于
  21. */
  22. case GREATER_THAN = 3;
  23. /**
  24. * 大于等于
  25. */
  26. case GREATER_THAN_OR_EQUAL = 4;
  27. /**
  28. * 小于
  29. */
  30. case LESS_THAN = 5;
  31. /**
  32. * 小于等于
  33. */
  34. case LESS_THAN_OR_EQUAL = 6;
  35. /**
  36. * 获取所有比较运算符
  37. *
  38. * @return array
  39. */
  40. public static function getAll(): array
  41. {
  42. return [
  43. self::EQUAL->value => '等于',
  44. self::NOT_EQUAL->value => '不等于',
  45. self::GREATER_THAN->value => '大于',
  46. self::GREATER_THAN_OR_EQUAL->value => '大于等于',
  47. self::LESS_THAN->value => '小于',
  48. self::LESS_THAN_OR_EQUAL->value => '小于等于',
  49. ];
  50. }
  51. /**
  52. * 获取比较运算符名称
  53. *
  54. * @param int $operator
  55. * @return string
  56. */
  57. public static function getName(int $operator): string
  58. {
  59. return self::getAll()[$operator] ?? '未知';
  60. }
  61. /**
  62. * 检查比较运算符是否有效
  63. *
  64. * @param int $operator
  65. * @return bool
  66. */
  67. public static function isValid(int $operator): bool
  68. {
  69. return isset(self::getAll()[$operator]);
  70. }
  71. /**
  72. * 获取比较运算符符号
  73. *
  74. * @param int $operator
  75. * @return string
  76. */
  77. public static function getSymbol(int $operator): string
  78. {
  79. $symbols = [
  80. self::EQUAL->value => '=',
  81. self::NOT_EQUAL->value => '≠',
  82. self::GREATER_THAN->value => '>',
  83. self::GREATER_THAN_OR_EQUAL->value => '≥',
  84. self::LESS_THAN->value => '<',
  85. self::LESS_THAN_OR_EQUAL->value => '≤',
  86. ];
  87. return $symbols[$operator] ?? '?';
  88. }
  89. /**
  90. * 执行比较操作
  91. *
  92. * @param mixed $a 第一个值
  93. * @param mixed $b 第二个值
  94. * @param int $operator 运算符
  95. * @return bool 比较结果
  96. */
  97. public static function compare($a, $b, int $operator): bool
  98. {
  99. switch ($operator) {
  100. case self::EQUAL->value:
  101. return $a == $b;
  102. case self::NOT_EQUAL->value:
  103. return $a != $b;
  104. case self::GREATER_THAN->value:
  105. return $a > $b;
  106. case self::GREATER_THAN_OR_EQUAL->value:
  107. return $a >= $b;
  108. case self::LESS_THAN->value:
  109. return $a < $b;
  110. case self::LESS_THAN_OR_EQUAL->value:
  111. return $a <= $b;
  112. default:
  113. return false;
  114. }
  115. }
  116. }