@@ -101,23 +101,33 @@ public static function apply(?string $op, $u, $c): bool
101101 }
102102 break ;
103103 case "semVerEqual " :
104- $ uVer = self ::parseSemVer ($ u );
105- $ cVer = self ::parseSemVer ($ c );
106- return ($ uVer != null ) && ($ cVer != null ) && $ uVer ->comparePrecedence ($ cVer ) == 0 ;
104+ return self ::semver_operator ($ u , $ c , 0 );
107105 case "semVerLessThan " :
108- $ uVer = self ::parseSemVer ($ u );
109- $ cVer = self ::parseSemVer ($ c );
110- return ($ uVer != null ) && ($ cVer != null ) && $ uVer ->comparePrecedence ($ cVer ) < 0 ;
106+ return self ::semver_operator ($ u , $ c , -1 );
111107 case "semVerGreaterThan " :
112- $ uVer = self ::parseSemVer ($ u );
113- $ cVer = self ::parseSemVer ($ c );
114- return ($ uVer != null ) && ($ cVer != null ) && $ uVer ->comparePrecedence ($ cVer ) > 0 ;
108+ return self ::semver_operator ($ u , $ c , 1 );
115109 }
116110 } catch (Exception $ ignored ) {
117111 }
118112 return false ;
119113 }
120114
115+ /**
116+ * @param mixed|null $u
117+ * @param mixed|null $c
118+ * @param int $expectedComparisonResult
119+ * @return bool
120+ */
121+ private static function semver_operator ($ u , $ c , $ expectedComparisonResult ): bool
122+ {
123+ if (!is_string ($ u ) || !is_string ($ c )) {
124+ return false ;
125+ }
126+ $ uVer = self ::parseSemVer ($ u );
127+ $ cVer = self ::parseSemVer ($ c );
128+ return ($ uVer != null ) && ($ cVer != null ) && $ uVer ->comparePrecedence ($ cVer ) == $ expectedComparisonResult ;
129+ }
130+
121131 /**
122132 * A stricter version of the built-in is_numeric checker.
123133 *
0 commit comments