annotate vendor/phar-io/manifest/src/values/Manifest.php @ 5:12f9dff5fda9 tip

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