Chris@2: , Sebastian Heuer , Sebastian Bergmann Chris@2: * Chris@2: * For the full copyright and license information, please view the LICENSE Chris@2: * file that was distributed with this source code. Chris@2: */ Chris@2: Chris@2: namespace PharIo\Manifest; Chris@2: Chris@2: use PharIo\Version\Version; Chris@2: Chris@2: class Manifest { Chris@2: /** Chris@2: * @var ApplicationName Chris@2: */ Chris@2: private $name; Chris@2: Chris@2: /** Chris@2: * @var Version Chris@2: */ Chris@2: private $version; Chris@2: Chris@2: /** Chris@2: * @var Type Chris@2: */ Chris@2: private $type; Chris@2: Chris@2: /** Chris@2: * @var CopyrightInformation Chris@2: */ Chris@2: private $copyrightInformation; Chris@2: Chris@2: /** Chris@2: * @var RequirementCollection Chris@2: */ Chris@2: private $requirements; Chris@2: Chris@2: /** Chris@2: * @var BundledComponentCollection Chris@2: */ Chris@2: private $bundledComponents; Chris@2: Chris@2: public function __construct(ApplicationName $name, Version $version, Type $type, CopyrightInformation $copyrightInformation, RequirementCollection $requirements, BundledComponentCollection $bundledComponents) { Chris@2: $this->name = $name; Chris@2: $this->version = $version; Chris@2: $this->type = $type; Chris@2: $this->copyrightInformation = $copyrightInformation; Chris@2: $this->requirements = $requirements; Chris@2: $this->bundledComponents = $bundledComponents; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return ApplicationName Chris@2: */ Chris@2: public function getName() { Chris@2: return $this->name; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return Version Chris@2: */ Chris@2: public function getVersion() { Chris@2: return $this->version; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return Type Chris@2: */ Chris@2: public function getType() { Chris@2: return $this->type; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return CopyrightInformation Chris@2: */ Chris@2: public function getCopyrightInformation() { Chris@2: return $this->copyrightInformation; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return RequirementCollection Chris@2: */ Chris@2: public function getRequirements() { Chris@2: return $this->requirements; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return BundledComponentCollection Chris@2: */ Chris@2: public function getBundledComponents() { Chris@2: return $this->bundledComponents; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return bool Chris@2: */ Chris@2: public function isApplication() { Chris@2: return $this->type->isApplication(); Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return bool Chris@2: */ Chris@2: public function isLibrary() { Chris@2: return $this->type->isLibrary(); Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return bool Chris@2: */ Chris@2: public function isExtension() { Chris@2: return $this->type->isExtension(); Chris@2: } Chris@2: Chris@2: /** Chris@2: * @param ApplicationName $application Chris@2: * @param Version|null $version Chris@2: * Chris@2: * @return bool Chris@2: */ Chris@2: public function isExtensionFor(ApplicationName $application, Version $version = null) { Chris@2: if (!$this->isExtension()) { Chris@2: return false; Chris@2: } Chris@2: Chris@2: /** @var Extension $type */ Chris@2: $type = $this->type; Chris@2: Chris@2: if ($version !== null) { Chris@2: return $type->isCompatibleWith($application, $version); Chris@2: } Chris@2: Chris@2: return $type->isExtensionFor($application); Chris@2: } Chris@2: }