|
|
|
@ -17,21 +17,21 @@ namespace Composer\Package\LinkConstraint;
|
|
|
|
|
*
|
|
|
|
|
* @author Nils Adermann <naderman@naderman.de>
|
|
|
|
|
*/
|
|
|
|
|
class SpecificConstraint implements LinkConstraintInterface
|
|
|
|
|
abstract class SpecificConstraint implements LinkConstraintInterface
|
|
|
|
|
{
|
|
|
|
|
public function matches(LinkConstraintInterface $provider)
|
|
|
|
|
{
|
|
|
|
|
if ($provider instanceof MultiConstraint) {
|
|
|
|
|
// turn matching around to find a match
|
|
|
|
|
return $provider->matches($this);
|
|
|
|
|
} else if ($provider instanceof get_class($this)) {
|
|
|
|
|
} else if ($provider instanceof $this) {
|
|
|
|
|
return $this->matchSpecific($provider);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
abstract public function matchSpecific($provider);
|
|
|
|
|
|
|
|
|
|
abstract public function __toString();
|
|
|
|
|
// implementations must implement a method of this format:
|
|
|
|
|
// not declared abstract here because type hinting violates parameter coherence (TODO right word?)
|
|
|
|
|
// public function matchSpecific(<SpecificConstraintType> $provider);
|
|
|
|
|
}
|
|
|
|
|