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 class ApplicationName {
|
Chris@14
|
14 /**
|
Chris@14
|
15 * @var string
|
Chris@14
|
16 */
|
Chris@14
|
17 private $name;
|
Chris@14
|
18
|
Chris@14
|
19 /**
|
Chris@14
|
20 * ApplicationName constructor.
|
Chris@14
|
21 *
|
Chris@14
|
22 * @param string $name
|
Chris@14
|
23 *
|
Chris@14
|
24 * @throws InvalidApplicationNameException
|
Chris@14
|
25 */
|
Chris@14
|
26 public function __construct($name) {
|
Chris@14
|
27 $this->ensureIsString($name);
|
Chris@14
|
28 $this->ensureValidFormat($name);
|
Chris@14
|
29 $this->name = $name;
|
Chris@14
|
30 }
|
Chris@14
|
31
|
Chris@14
|
32 /**
|
Chris@14
|
33 * @return string
|
Chris@14
|
34 */
|
Chris@14
|
35 public function __toString() {
|
Chris@14
|
36 return $this->name;
|
Chris@14
|
37 }
|
Chris@14
|
38
|
Chris@14
|
39 public function isEqual(ApplicationName $name) {
|
Chris@14
|
40 return $this->name === $name->name;
|
Chris@14
|
41 }
|
Chris@14
|
42
|
Chris@14
|
43 /**
|
Chris@14
|
44 * @param string $name
|
Chris@14
|
45 *
|
Chris@14
|
46 * @throws InvalidApplicationNameException
|
Chris@14
|
47 */
|
Chris@14
|
48 private function ensureValidFormat($name) {
|
Chris@14
|
49 if (!preg_match('#\w/\w#', $name)) {
|
Chris@14
|
50 throw new InvalidApplicationNameException(
|
Chris@14
|
51 sprintf('Format of name "%s" is not valid - expected: vendor/packagename', $name),
|
Chris@14
|
52 InvalidApplicationNameException::InvalidFormat
|
Chris@14
|
53 );
|
Chris@14
|
54 }
|
Chris@14
|
55 }
|
Chris@14
|
56
|
Chris@14
|
57 private function ensureIsString($name) {
|
Chris@14
|
58 if (!is_string($name)) {
|
Chris@14
|
59 throw new InvalidApplicationNameException(
|
Chris@14
|
60 'Name must be a string',
|
Chris@14
|
61 InvalidApplicationNameException::NotAString
|
Chris@14
|
62 );
|
Chris@14
|
63 }
|
Chris@14
|
64 }
|
Chris@14
|
65 }
|