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 use PharIo\Version\VersionConstraint;
|
Chris@14
|
15
|
Chris@14
|
16 class Extension extends Type {
|
Chris@14
|
17 /**
|
Chris@14
|
18 * @var ApplicationName
|
Chris@14
|
19 */
|
Chris@14
|
20 private $application;
|
Chris@14
|
21
|
Chris@14
|
22 /**
|
Chris@14
|
23 * @var VersionConstraint
|
Chris@14
|
24 */
|
Chris@14
|
25 private $versionConstraint;
|
Chris@14
|
26
|
Chris@14
|
27 /**
|
Chris@14
|
28 * @param ApplicationName $application
|
Chris@14
|
29 * @param VersionConstraint $versionConstraint
|
Chris@14
|
30 */
|
Chris@14
|
31 public function __construct(ApplicationName $application, VersionConstraint $versionConstraint) {
|
Chris@14
|
32 $this->application = $application;
|
Chris@14
|
33 $this->versionConstraint = $versionConstraint;
|
Chris@14
|
34 }
|
Chris@14
|
35
|
Chris@14
|
36 /**
|
Chris@14
|
37 * @return ApplicationName
|
Chris@14
|
38 */
|
Chris@14
|
39 public function getApplicationName() {
|
Chris@14
|
40 return $this->application;
|
Chris@14
|
41 }
|
Chris@14
|
42
|
Chris@14
|
43 /**
|
Chris@14
|
44 * @return VersionConstraint
|
Chris@14
|
45 */
|
Chris@14
|
46 public function getVersionConstraint() {
|
Chris@14
|
47 return $this->versionConstraint;
|
Chris@14
|
48 }
|
Chris@14
|
49
|
Chris@14
|
50 /**
|
Chris@14
|
51 * @return bool
|
Chris@14
|
52 */
|
Chris@14
|
53 public function isExtension() {
|
Chris@14
|
54 return true;
|
Chris@14
|
55 }
|
Chris@14
|
56
|
Chris@14
|
57 /**
|
Chris@14
|
58 * @param ApplicationName $name
|
Chris@14
|
59 *
|
Chris@14
|
60 * @return bool
|
Chris@14
|
61 */
|
Chris@14
|
62 public function isExtensionFor(ApplicationName $name) {
|
Chris@14
|
63 return $this->application->isEqual($name);
|
Chris@14
|
64 }
|
Chris@14
|
65
|
Chris@14
|
66 /**
|
Chris@14
|
67 * @param ApplicationName $name
|
Chris@14
|
68 * @param Version $version
|
Chris@14
|
69 *
|
Chris@14
|
70 * @return bool
|
Chris@14
|
71 */
|
Chris@14
|
72 public function isCompatibleWith(ApplicationName $name, Version $version) {
|
Chris@14
|
73 return $this->isExtensionFor($name) && $this->versionConstraint->complies($version);
|
Chris@14
|
74 }
|
Chris@14
|
75 }
|