Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
5 / 5
CRAP
100.00% covered (success)
100.00%
13 / 13
Recipient
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
5 / 5
8
100.00% covered (success)
100.00%
13 / 13
 __construct
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
9 / 9
 getEmail
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getName
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getHeader
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 __set_state
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
1<?php
2
3namespace Miniframe\Mailer\Model;
4
5class Recipient
6{
7    /**
8     * Header constants
9     */
10    public const
11        HEADER_TO = 1,
12        HEADER_CC = 2,
13        HEADER_BCC = 3;
14
15    /**
16     * Recipient email address.
17     *
18     * @var string
19     */
20    private $email;
21    /**
22     * Recipient name.
23     *
24     * @var string
25     */
26    private $name;
27    /**
28     * Required mail header
29     *
30     * @var int
31     */
32    private $header;
33
34    /**
35     * Recipient data model
36     *
37     * @param string      $email  Email address of the recipient.
38     * @param string|null $name   Name of the recipient.
39     * @param integer     $header One of the Header constants (self::HEADER_TO, self::HEADER_CC, self::HEADER_BCC).
40     */
41    public function __construct(string $email, string $name = null, int $header = self::HEADER_TO)
42    {
43        if (!in_array($header, [self::HEADER_TO, self::HEADER_CC, self::HEADER_BCC])) {
44            throw new \InvalidArgumentException(
45                'The header must be one of the constants HEADER_TO, HEADER_CC or HEADER_BCC'
46            );
47        }
48        if (!trim($email) || !filter_var(trim($email), FILTER_VALIDATE_EMAIL)) {
49            throw new \InvalidArgumentException('Invalid email address specified');
50        }
51
52        $this->email = trim($email);
53        $this->name = trim($name ?? ucfirst(explode('@', $email, 2)[0]));
54        $this->header = $header;
55    }
56
57    /**
58     * Returns the mail address.
59     *
60     * @return string
61     */
62    public function getEmail(): string
63    {
64        return $this->email;
65    }
66
67    /**
68     * Returns the name.
69     *
70     * @return string
71     */
72    public function getName(): string
73    {
74        return $this->name;
75    }
76
77    /**
78     * Returns the header.
79     *
80     * @return integer
81     */
82    public function getHeader(): int
83    {
84        return $this->header;
85    }
86
87    /**
88     * Magic method; sets this model based on a specific state
89     *
90     * @param array $properties The actual state.
91     *
92     * @return Recipient
93     * @see    var_export()
94     */
95    public static function __set_state(array $properties): self
96    {
97        return new self($properties['email'], $properties['name'], $properties['header']);
98    }
99}