annotate vendor/phar-io/manifest/src/values/Manifest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@14 1 <?php
Chris@14 2 /*
Chris@14 3 * This file is part of PharIo\Manifest.
Chris@14 4 *
Chris@14 5 * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de>
Chris@14 6 *
Chris@14 7 * For the full copyright and license information, please view the LICENSE
Chris@14 8 * file that was distributed with this source code.
Chris@14 9 */
Chris@14 10
Chris@14 11 namespace PharIo\Manifest;
Chris@14 12
Chris@14 13 use PharIo\Version\Version;
Chris@14 14
Chris@14 15 class Manifest {
Chris@14 16 /**
Chris@14 17 * @var ApplicationName
Chris@14 18 */
Chris@14 19 private $name;
Chris@14 20
Chris@14 21 /**
Chris@14 22 * @var Version
Chris@14 23 */
Chris@14 24 private $version;
Chris@14 25
Chris@14 26 /**
Chris@14 27 * @var Type
Chris@14 28 */
Chris@14 29 private $type;
Chris@14 30
Chris@14 31 /**
Chris@14 32 * @var CopyrightInformation
Chris@14 33 */
Chris@14 34 private $copyrightInformation;
Chris@14 35
Chris@14 36 /**
Chris@14 37 * @var RequirementCollection
Chris@14 38 */
Chris@14 39 private $requirements;
Chris@14 40
Chris@14 41 /**
Chris@14 42 * @var BundledComponentCollection
Chris@14 43 */
Chris@14 44 private $bundledComponents;
Chris@14 45
Chris@14 46 public function __construct(ApplicationName $name, Version $version, Type $type, CopyrightInformation $copyrightInformation, RequirementCollection $requirements, BundledComponentCollection $bundledComponents) {
Chris@14 47 $this->name = $name;
Chris@14 48 $this->version = $version;
Chris@14 49 $this->type = $type;
Chris@14 50 $this->copyrightInformation = $copyrightInformation;
Chris@14 51 $this->requirements = $requirements;
Chris@14 52 $this->bundledComponents = $bundledComponents;
Chris@14 53 }
Chris@14 54
Chris@14 55 /**
Chris@14 56 * @return ApplicationName
Chris@14 57 */
Chris@14 58 public function getName() {
Chris@14 59 return $this->name;
Chris@14 60 }
Chris@14 61
Chris@14 62 /**
Chris@14 63 * @return Version
Chris@14 64 */
Chris@14 65 public function getVersion() {
Chris@14 66 return $this->version;
Chris@14 67 }
Chris@14 68
Chris@14 69 /**
Chris@14 70 * @return Type
Chris@14 71 */
Chris@14 72 public function getType() {
Chris@14 73 return $this->type;
Chris@14 74 }
Chris@14 75
Chris@14 76 /**
Chris@14 77 * @return CopyrightInformation
Chris@14 78 */
Chris@14 79 public function getCopyrightInformation() {
Chris@14 80 return $this->copyrightInformation;
Chris@14 81 }
Chris@14 82
Chris@14 83 /**
Chris@14 84 * @return RequirementCollection
Chris@14 85 */
Chris@14 86 public function getRequirements() {
Chris@14 87 return $this->requirements;
Chris@14 88 }
Chris@14 89
Chris@14 90 /**
Chris@14 91 * @return BundledComponentCollection
Chris@14 92 */
Chris@14 93 public function getBundledComponents() {
Chris@14 94 return $this->bundledComponents;
Chris@14 95 }
Chris@14 96
Chris@14 97 /**
Chris@14 98 * @return bool
Chris@14 99 */
Chris@14 100 public function isApplication() {
Chris@14 101 return $this->type->isApplication();
Chris@14 102 }
Chris@14 103
Chris@14 104 /**
Chris@14 105 * @return bool
Chris@14 106 */
Chris@14 107 public function isLibrary() {
Chris@14 108 return $this->type->isLibrary();
Chris@14 109 }
Chris@14 110
Chris@14 111 /**
Chris@14 112 * @return bool
Chris@14 113 */
Chris@14 114 public function isExtension() {
Chris@14 115 return $this->type->isExtension();
Chris@14 116 }
Chris@14 117
Chris@14 118 /**
Chris@14 119 * @param ApplicationName $application
Chris@14 120 * @param Version|null $version
Chris@14 121 *
Chris@14 122 * @return bool
Chris@14 123 */
Chris@14 124 public function isExtensionFor(ApplicationName $application, Version $version = null) {
Chris@14 125 if (!$this->isExtension()) {
Chris@14 126 return false;
Chris@14 127 }
Chris@14 128
Chris@14 129 /** @var Extension $type */
Chris@14 130 $type = $this->type;
Chris@14 131
Chris@14 132 if ($version !== null) {
Chris@14 133 return $type->isCompatibleWith($application, $version);
Chris@14 134 }
Chris@14 135
Chris@14 136 return $type->isExtensionFor($application);
Chris@14 137 }
Chris@14 138 }