SecretWord   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 11
c 1
b 0
f 0
dl 0
loc 28
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 17 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Skrill\ValueObject;
6
7
use Skrill\Exception\InvalidSecretWordException;
8
use Skrill\ValueObject\Traits\ValueToStringTrait;
9
10
/**
11
 * Value object for Skrill secret word.
12
 *
13
 * @see https://www.skrill.com/fileadmin/content/pdf/Skrill_Quick_Checkout_Guide.pdf
14
 */
15
final class SecretWord
16
{
17
    use ValueToStringTrait;
18
19
    public const MAX_LENGTH = 10;
20
21
    /**
22
     * @param string $value
23
     *
24
     * @throws InvalidSecretWordException
25
     */
26
    public function __construct(string $value)
27
    {
28
        $value = trim($value);
29
30
        if (empty($value)) {
31
            throw InvalidSecretWordException::emptySecretWord();
32
        }
33
34
        if (strlen($value) > self::MAX_LENGTH) {
35
            throw InvalidSecretWordException::invalidMaxLength();
36
        }
37
38
        if (preg_match('/[^a-zA-Z0-9\s]/', $value)) {
39
            throw InvalidSecretWordException::specialCharacters();
40
        }
41
42
        $this->value = $value;
43
    }
44
}
45