Chris@14: , Sebastian Heuer , Sebastian Bergmann Chris@14: * Chris@14: * For the full copyright and license information, please view the LICENSE Chris@14: * file that was distributed with this source code. Chris@14: */ Chris@14: Chris@14: namespace PharIo\Manifest; Chris@14: Chris@14: use PharIo\Version\Version; Chris@14: use PharIo\Version\VersionConstraint; Chris@14: Chris@14: class Extension extends Type { Chris@14: /** Chris@14: * @var ApplicationName Chris@14: */ Chris@14: private $application; Chris@14: Chris@14: /** Chris@14: * @var VersionConstraint Chris@14: */ Chris@14: private $versionConstraint; Chris@14: Chris@14: /** Chris@14: * @param ApplicationName $application Chris@14: * @param VersionConstraint $versionConstraint Chris@14: */ Chris@14: public function __construct(ApplicationName $application, VersionConstraint $versionConstraint) { Chris@14: $this->application = $application; Chris@14: $this->versionConstraint = $versionConstraint; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return ApplicationName Chris@14: */ Chris@14: public function getApplicationName() { Chris@14: return $this->application; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return VersionConstraint Chris@14: */ Chris@14: public function getVersionConstraint() { Chris@14: return $this->versionConstraint; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return bool Chris@14: */ Chris@14: public function isExtension() { Chris@14: return true; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @param ApplicationName $name Chris@14: * Chris@14: * @return bool Chris@14: */ Chris@14: public function isExtensionFor(ApplicationName $name) { Chris@14: return $this->application->isEqual($name); Chris@14: } Chris@14: Chris@14: /** Chris@14: * @param ApplicationName $name Chris@14: * @param Version $version Chris@14: * Chris@14: * @return bool Chris@14: */ Chris@14: public function isCompatibleWith(ApplicationName $name, Version $version) { Chris@14: return $this->isExtensionFor($name) && $this->versionConstraint->complies($version); Chris@14: } Chris@14: }