/** * @dataProvider provideLessThanCases */ function testLessThanCases($aArray, $bArray) { $a = $this->makeVersion($aArray); $b = $this->makeVersion($bArray); $actual = Version::compare($a, $b); $this->assertLessThan(0, $actual); $actual = Version::compare($b, $a); $this->assertGreaterThan(0, $actual); }
public function testCompareVersion() { // test = version $version = Version::VERSION; $this->assertEquals(0, Version::compare($version)); // test < version $this->assertLessThan(0, Version::compare('0.1')); $this->assertLessThan(0, Version::compare($version . '-alfa')); $this->assertLessThan(0, Version::compare($version . '-beta')); $this->assertLessThan(0, Version::compare($version . '-rc1')); // test > version $this->assertGreaterThan(0, Version::compare($version . '.1')); $this->assertGreaterThan(0, Version::compare($version . '-1')); }
<?php require 'Version.class.php'; $version = '2.7.1'; $obj = new Version(); // 版本转数字 $version_code = $obj->version_to_integer($version); echo $version_code . '<br>'; // 20701 // 数字转版本 $version = $obj->integer_to_version($version_code); echo $version . '<br>'; // 2.7.1 // 检查版本 $version = '1.1.a'; var_dump($obj->check($version)); // false // 比较两个版本 $version1 = '2.9.9'; $version2 = '10.0.1'; $result = $obj->compare($version1, $version2); echo $result; // -1
/** * Choose a Package from the collection which satisfies the * specified selection filters. If no suitable package can * be found the special NullPackage is returned. * * @param platformId (Integer) PlatformId filter. * @param title (String) Symbolic name of the package to download. Default="Doomsday". * @param unstable (Boolean) @c true= Only consider 'unstable' packs. * @param hasDownload (Boolean) @c true= Only consider 'downloadable' packs. * @return (Object) Chosen package. */ private function &choosePackage($platformId = PID_ANY, $title = "Doomsday", $unstable = FALSE, $downloadable = TRUE) { $unstable = (bool) $unstable; $downloadable = (bool) $downloadable; if (isset($this->packages)) { $matchTitle = (bool) (strlen($title) > 0); $found = 0; foreach ($this->packages as &$pack) { if ($pack->platformId() !== $platformId) { continue; } if ($matchTitle && strcasecmp($pack->title(), $title)) { continue; } if ($unstable != $pack instanceof AbstractUnstablePackage) { continue; } if ($downloadable != ($pack instanceof iDownloadable && ($pack->hasDirectDownloadUri() || $pack->hasDirectDownloadFallbackUri()))) { continue; } // Found something suitable. if (!$found || Version::compare($pack->version(), $found->version()) > 0) { $found = $pack; } } if ($found) { return $found; } } // Nothing suitable. return self::$nullPack; }
private static function compareVersionWithCompare(Version $aFrom = null, Version $aTo = null, $sFromCompare, $sToCompare) { if (self::isSameDirection($sFromCompare, $sToCompare)) { return self::INTERSECT; } else { if (null !== $aFrom and null !== $aTo) { $compare = $aFrom->compare($aTo); if ($compare > 0) { if ('<' === $sFromCompare or '<=' === $sFromCompare) { return self::INTERSECT; } else { return self::SEPARATE; } } else { if ($compare < 0) { if ('<' === $sFromCompare or '<=' === $sFromCompare) { return self::SEPARATE; } else { return self::INTERSECT; } } else { if (0 === $compare) { if (('<=' === $sFromCompare or '>=' === $sFromCompare) and ('<=' === $sToCompare or '>=' === $sToCompare)) { return self::INTERSECT; } else { return self::SEPARATE; } } else { throw new VersionException('compare error : `%s`', $compare); } } } } else { return self::INTERSECT; } } }