Comparator.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. /*
  3. * This file is part of composer/semver.
  4. *
  5. * (c) Composer <https://github.com/composer>
  6. *
  7. * For the full copyright and license information, please view
  8. * the LICENSE file that was distributed with this source code.
  9. */
  10. namespace Composer\Semver;
  11. use Composer\Semver\Constraint\Constraint;
  12. class Comparator
  13. {
  14. /**
  15. * Evaluates the expression: $version1 > $version2.
  16. *
  17. * @param string $version1
  18. * @param string $version2
  19. *
  20. * @return bool
  21. */
  22. public static function greaterThan($version1, $version2)
  23. {
  24. return self::compare($version1, '>', $version2);
  25. }
  26. /**
  27. * Evaluates the expression: $version1 >= $version2.
  28. *
  29. * @param string $version1
  30. * @param string $version2
  31. *
  32. * @return bool
  33. */
  34. public static function greaterThanOrEqualTo($version1, $version2)
  35. {
  36. return self::compare($version1, '>=', $version2);
  37. }
  38. /**
  39. * Evaluates the expression: $version1 < $version2.
  40. *
  41. * @param string $version1
  42. * @param string $version2
  43. *
  44. * @return bool
  45. */
  46. public static function lessThan($version1, $version2)
  47. {
  48. return self::compare($version1, '<', $version2);
  49. }
  50. /**
  51. * Evaluates the expression: $version1 <= $version2.
  52. *
  53. * @param string $version1
  54. * @param string $version2
  55. *
  56. * @return bool
  57. */
  58. public static function lessThanOrEqualTo($version1, $version2)
  59. {
  60. return self::compare($version1, '<=', $version2);
  61. }
  62. /**
  63. * Evaluates the expression: $version1 == $version2.
  64. *
  65. * @param string $version1
  66. * @param string $version2
  67. *
  68. * @return bool
  69. */
  70. public static function equalTo($version1, $version2)
  71. {
  72. return self::compare($version1, '==', $version2);
  73. }
  74. /**
  75. * Evaluates the expression: $version1 != $version2.
  76. *
  77. * @param string $version1
  78. * @param string $version2
  79. *
  80. * @return bool
  81. */
  82. public static function notEqualTo($version1, $version2)
  83. {
  84. return self::compare($version1, '!=', $version2);
  85. }
  86. /**
  87. * Evaluates the expression: $version1 $operator $version2.
  88. *
  89. * @param string $version1
  90. * @param string $operator
  91. * @param string $version2
  92. *
  93. * @return bool
  94. *
  95. * @phpstan-param Constraint::STR_OP_* $operator
  96. */
  97. public static function compare($version1, $operator, $version2)
  98. {
  99. $constraint = new Constraint($operator, $version2);
  100. return $constraint->matchSpecific(new Constraint('==', $version1), true);
  101. }
  102. }