From 0e2959cc32de3a2e2cb80364c4a00c53bc5be5c9 Mon Sep 17 00:00:00 2001 From: Alexey Kupershtokh Date: Wed, 20 Nov 2013 10:14:44 +0700 Subject: [PATCH] Cache in VersionConstraint --- .../LinkConstraint/VersionConstraint.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Composer/Package/LinkConstraint/VersionConstraint.php b/src/Composer/Package/LinkConstraint/VersionConstraint.php index 0e8a8c3b7..9bf5e515b 100644 --- a/src/Composer/Package/LinkConstraint/VersionConstraint.php +++ b/src/Composer/Package/LinkConstraint/VersionConstraint.php @@ -60,12 +60,27 @@ class VersionConstraint extends SpecificConstraint return version_compare($a, $b, $operator); } + public function matchSpecific(VersionConstraint $provider, $compareBranches = false) + { + static $c = array(); + if (isset($c[$this->operator][$this->version][$provider->operator][$provider->version][$compareBranches])) { + //if ($c[$this->operator][$this->version][$provider->operator][$provider->version][$compareBranches] != + // $this->_matchSpecific($provider, $compareBranches)) { + // throw new \Exception('Broken cache'); + //} + return $c[$this->operator][$this->version][$provider->operator][$provider->version][$compareBranches]; + } + + return $c[$this->operator][$this->version][$provider->operator][$provider->version][$compareBranches] = + $this->_matchSpecific($provider, $compareBranches); + } + /** * @param VersionConstraint $provider * @param bool $compareBranches * @return bool */ - public function matchSpecific(VersionConstraint $provider, $compareBranches = false) + public function _matchSpecific(VersionConstraint $provider, $compareBranches = false) { $noEqualOp = str_replace('=', '', $this->operator); $providerNoEqualOp = str_replace('=', '', $provider->operator);