Total Complexity | 6 |
Total Lines | 33 |
Duplicated Lines | 0 % |
Coverage | 100% |
Changes | 0 |
1 | <?php |
||
5 | class Slug |
||
6 | { |
||
7 | private string $value; |
||
8 | |||
9 | 5 | private function __construct(string $value) |
|
12 | 5 | } |
|
13 | |||
14 | 10 | public static function fromValue(string $value): Slug |
|
15 | { |
||
16 | 10 | self::checkSlugIsValid($value); |
|
17 | |||
18 | 5 | return new Slug($value); |
|
19 | } |
||
20 | |||
21 | 10 | protected static function checkSlugIsValid(string $value): void |
|
22 | { |
||
23 | 10 | if (!preg_match('/^[a-z-0-9]*$/', $value)) { |
|
24 | 5 | throw new \InvalidArgumentException( |
|
25 | 5 | "$value is not a valid slug. Only lowercase, letters, numbers and dashes are allowed." |
|
26 | ); |
||
27 | } |
||
28 | 5 | } |
|
29 | |||
30 | 1 | public function value(): string |
|
31 | { |
||
32 | 1 | return $this->value; |
|
33 | } |
||
34 | |||
35 | 2 | public function equal(Slug $slug): bool |
|
38 | } |
||
39 | } |
||
40 |