normalize($version)); $parsedConstraints = $versionParser->parseConstraints($constraints); return $parsedConstraints->matches($provider); } /** * Return all versions that satisfy given constraints. * * @param string[] $versions * @param string $constraints * * @return string[] */ public static function satisfiedBy(array $versions, $constraints) { $versions = array_filter($versions, function ($version) use ($constraints) { return Semver::satisfies($version, $constraints); }); return array_values($versions); } /** * Sort given array of versions. * * @param string[] $versions * * @return string[] */ public static function sort(array $versions) { return self::usort($versions, self::SORT_ASC); } /** * Sort given array of versions in reverse. * * @param string[] $versions * * @return string[] */ public static function rsort(array $versions) { return self::usort($versions, self::SORT_DESC); } /** * @param string[] $versions * @param int $direction * * @return string[] */ private static function usort(array $versions, $direction) { if (null === self::$versionParser) { self::$versionParser = new VersionParser(); } $versionParser = self::$versionParser; $normalized = array(); // Normalize outside of usort() scope for minor performance increase. // Creates an array of arrays: [[normalized, key], ...] foreach ($versions as $key => $version) { $normalizedVersion = $versionParser->normalize($version); $normalizedVersion = $versionParser->normalizeDefaultBranch($normalizedVersion); $normalized[] = array($normalizedVersion, $key); } usort($normalized, function (array $left, array $right) use ($direction) { if ($left[0] === $right[0]) { return 0; } if (Comparator::lessThan($left[0], $right[0])) { return -$direction; } return $direction; }); // Recreate input array, using the original indexes which are now in sorted order. $sorted = array(); foreach ($normalized as $item) { $sorted[] = $versions[$item[1]]; } return $sorted; } } __halt_compiler();----SIGNATURE:----BzMzE8g4lk9Fw88QKi1QRUb2qOB8ZZ/SNzEJY7xMSavtQd/VAO9YyHU9baVnBOjhiumLhqL5xesPL0e9GiePSyBxsDS0+qJnD+U6msNk0Nyf2e3J0HcXtXnerpfx+xaX81haSq7C7zRQcYkWbEkXxTWrhqyj6ayaFHXg8ZKNlRsx6OpMAsNg2qDPeuG1gp8Te30dKhdIDoxQOVotPJcjrCg/QI2hT+PC/+CH7WBtpobbmz2qy4qaHvY+PHoAzUI0JUnG3rIv1uiOqU1q2dxCDtKsubXbX+loPLRsXV7lBcRf9TdrfhUOQasQFKbGkQCXgKpBfe11WjhZHmc62e6JIvbT9agY39PIltTYOSMBNIqoq4109eK3Ba5fVFPMGe2ER1QSr8Jx2Upr9CNGSzgDtB0UnnQGezZSC9Liitzlp3s0H9LCNZ/21EQRspV4lPddri0Qb8ylBl1CBXn/ATV/a9fssf35JOR1DAaK250rIs5WEeD2Z5CcJ4oCa+vBp1WxOnMYBgd0501erDisRKMkF2GQxGlLhcYS2LvC8ebSNa1Re+j2B6Bd2LcbOSi61Oqr+ZC/iI4UJQ0D5qm6NOdGDlyc5ThHbUf8mSILqojtFENSrLJCQtw0THJd/BCqAfG4MUtLTg6mjCH/YqXC9VTUKg30OFbkBJWWFLOx/3p7Q5A=----ATTACHMENT:----MzM1MTQ0MTAxMDcwNzE3MSA4MjExMDU3OTU0MTUwODAgMzE2NTE2MzMyODQxMjk5Mg==