瀏覽代碼

Use version contraints in the default policy rather than hardcoded version_compare

Nils Adermann 13 年之前
父節點
當前提交
6cf8d3888c
共有 2 個文件被更改,包括 6 次插入2 次删除
  1. 5 1
      src/Composer/DependencyResolver/DefaultPolicy.php
  2. 1 1
      src/Composer/Package/BasePackage.php

+ 5 - 1
src/Composer/DependencyResolver/DefaultPolicy.php

@@ -14,6 +14,7 @@ namespace Composer\DependencyResolver;
 
 use Composer\Repository\RepositoryInterface;
 use Composer\Package\PackageInterface;
+use Composer\Package\LinkConstraint\VersionConstraint;
 
 /**
  * @author Nils Adermann <naderman@naderman.de>
@@ -32,7 +33,10 @@ class DefaultPolicy implements PolicyInterface
 
     public function versionCompare(PackageInterface $a, PackageInterface $b, $operator)
     {
-        return version_compare($a->getVersion(), $b->getVersion(), $operator);
+        $constraint = new VersionConstraint($operator, $b->getVersion());
+        $version = new VersionConstraint('==', $a->getVersion());
+
+        return $constraint->matchSpecific($version);
     }
 
     public function findUpdatePackages(Solver $solver, Pool $pool, RepositoryInterface $repo, PackageInterface $package, $allowAll = false)

+ 1 - 1
src/Composer/Package/BasePackage.php

@@ -100,7 +100,7 @@ abstract class BasePackage implements PackageInterface
     public function matches($name, LinkConstraintInterface $constraint)
     {
         if ($this->name === $name) {
-            return $constraint->matches(new VersionConstraint('=', $this->getVersion(), $this->getReleaseType()));
+            return $constraint->matches(new VersionConstraint('==', $this->getVersion(), $this->getReleaseType()));
         }
 
         foreach ($this->getProvides() as $link) {