Issues (31)

src/MessageBuilder/MessageProxy.php (1 issue)

1
<?php
2
3
namespace Nip\Mail\MessageBuilder;
4
5
use Symfony\Component\Mime\Address;
6
7
trait MessageProxy
8
{
9
    /**
10
     * Dynamically call the default driver instance.
11
     *
12
     * @param array $parameters
13
     *
14
     * @return mixed
15
     */
16
    public function __call(string $method, $parameters)
17
    {
18
        return $this->message->$method(...$parameters);
19
    }
20
21
    /**
22
     * Set the subject of the message.
23
     *
24
     * @param string $subject
25
     *
26
     * @return $this
27
     */
28
    public function subject($subject)
29
    {
30
        $this->message->subject($subject);
31
32
        return $this;
33
    }
34
35
    public function addTo(...$addresses)
36
    {
37
        $this->addAddresses($addresses, 'to');
38
    }
39
40
    /**
41
     * @param $addresses
42
     * @param $type
43
     *
44
     * @return $this
45
     */
46
    protected function addAddresses($addresses, $type): self
47
    {
48
        $method = 'add'.ucfirst($type);
0 ignored issues
show
The assignment to $method is dead and can be removed.
Loading history...
49
        $addresses = $this->addressesToArray($addresses);
50
51
        $this->message->$type(...$addresses);
52
53
        return $this;
54
    }
55
56
    /**
57
     * @param $addresses
58
     *
59
     * @return Address[]
60
     */
61
    protected function addressesToArray($addresses): array
62
    {
63
        if (1 === count($addresses)) {
64
            return [new Address($addresses[0])];
65
        }
66
67
        if (2 === count($addresses)) {
68
            return [new Address($addresses[0], $addresses[1])];
69
        }
70
71
        $result = [];
72
        foreach ($addresses as $address) {
73
            $result[] = Address::create($address);
74
        }
75
76
        return $result;
77
    }
78
}
79