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: Chris@14: class Manifest { Chris@14: /** Chris@14: * @var ApplicationName Chris@14: */ Chris@14: private $name; Chris@14: Chris@14: /** Chris@14: * @var Version Chris@14: */ Chris@14: private $version; Chris@14: Chris@14: /** Chris@14: * @var Type Chris@14: */ Chris@14: private $type; Chris@14: Chris@14: /** Chris@14: * @var CopyrightInformation Chris@14: */ Chris@14: private $copyrightInformation; Chris@14: Chris@14: /** Chris@14: * @var RequirementCollection Chris@14: */ Chris@14: private $requirements; Chris@14: Chris@14: /** Chris@14: * @var BundledComponentCollection Chris@14: */ Chris@14: private $bundledComponents; Chris@14: Chris@14: public function __construct(ApplicationName $name, Version $version, Type $type, CopyrightInformation $copyrightInformation, RequirementCollection $requirements, BundledComponentCollection $bundledComponents) { Chris@14: $this->name = $name; Chris@14: $this->version = $version; Chris@14: $this->type = $type; Chris@14: $this->copyrightInformation = $copyrightInformation; Chris@14: $this->requirements = $requirements; Chris@14: $this->bundledComponents = $bundledComponents; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return ApplicationName Chris@14: */ Chris@14: public function getName() { Chris@14: return $this->name; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return Version Chris@14: */ Chris@14: public function getVersion() { Chris@14: return $this->version; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return Type Chris@14: */ Chris@14: public function getType() { Chris@14: return $this->type; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return CopyrightInformation Chris@14: */ Chris@14: public function getCopyrightInformation() { Chris@14: return $this->copyrightInformation; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return RequirementCollection Chris@14: */ Chris@14: public function getRequirements() { Chris@14: return $this->requirements; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return BundledComponentCollection Chris@14: */ Chris@14: public function getBundledComponents() { Chris@14: return $this->bundledComponents; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return bool Chris@14: */ Chris@14: public function isApplication() { Chris@14: return $this->type->isApplication(); Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return bool Chris@14: */ Chris@14: public function isLibrary() { Chris@14: return $this->type->isLibrary(); Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return bool Chris@14: */ Chris@14: public function isExtension() { Chris@14: return $this->type->isExtension(); Chris@14: } Chris@14: Chris@14: /** Chris@14: * @param ApplicationName $application Chris@14: * @param Version|null $version Chris@14: * Chris@14: * @return bool Chris@14: */ Chris@14: public function isExtensionFor(ApplicationName $application, Version $version = null) { Chris@14: if (!$this->isExtension()) { Chris@14: return false; Chris@14: } Chris@14: Chris@14: /** @var Extension $type */ Chris@14: $type = $this->type; Chris@14: Chris@14: if ($version !== null) { Chris@14: return $type->isCompatibleWith($application, $version); Chris@14: } Chris@14: Chris@14: return $type->isExtensionFor($application); Chris@14: } Chris@14: }