Personalize::addBcc()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
namespace Sichikawa\SendgridApiBuilder\Api;
3
4
use Sichikawa\SendgridApiBuilder\Api\Personalize\Bcc;
5
use Sichikawa\SendgridApiBuilder\Api\Personalize\Cc;
6
use Sichikawa\SendgridApiBuilder\Api\Personalize\CustomArgs;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, Sichikawa\SendgridApiBuilder\Api\CustomArgs.

Let’s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let’s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
7
use Sichikawa\SendgridApiBuilder\Api\Personalize\Headers;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, Sichikawa\SendgridApiBuilder\Api\Headers.

Let’s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let’s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
8
use Sichikawa\SendgridApiBuilder\Api\Personalize\Substitutions;
9
use Sichikawa\SendgridApiBuilder\Api\Personalize\To;
10
11
class Personalize
12
{
13
    /**
14
     * @var To
15
     */
16
    public $to;
17
18
    /**
19
     * @var Cc
20
     */
21
    public $cc;
22
23
    /**
24
     * @var Bcc
25
     */
26
    public $bcc;
27
28
    /**
29
     * @var string
30
     */
31
    public $subject;
32
33
    /**
34
     * @var Headers
35
     */
36
    public $headers;
37
38
    /**
39
     * @var Substitutions
40
     */
41
    public $substitutions;
42
43
    /**
44
     * @var CustomArgs
45
     */
46
    public $custom_args;
47
48
    /**
49
     * @var int
50
     */
51
    public $send_at;
52
53
    /**
54
     * @param array $to
55
     * @return $this
56
     */
57
    public function setTo($to)
58
    {
59
        $this->to = $to;
0 ignored issues
show
Documentation Bug introduced by
It seems like $to of type array is incompatible with the declared type object<Sichikawa\Sendgri...der\Api\Personalize\To> of property $to.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
60
        return $this;
61
    }
62
63
    /**
64
     * @param $email
65
     * @param null $name
66
     * @return $this
67
     */
68
    public function addTo($email, $name = null)
69
    {
70
        $this->to[] = new To($email, $name);
71
        return $this;
72
    }
73
74
    /**
75
     * @param array $cc
76
     * @return $this
77
     */
78
    public function setCc($cc)
79
    {
80
        $this->cc = $cc;
0 ignored issues
show
Documentation Bug introduced by
It seems like $cc of type array is incompatible with the declared type object<Sichikawa\Sendgri...der\Api\Personalize\Cc> of property $cc.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
81
        return $this;
82
    }
83
84
    /**
85
     * @param $email
86
     * @param null $name
87
     * @return $this
88
     */
89
    public function addCc($email, $name = null)
90
    {
91
        $this->cc[] = new Cc($email, $name);
92
        return $this;
93
    }
94
95
    /**
96
     * @param array $bcc
97
     * @return $this
98
     */
99
    public function setBcc($bcc)
100
    {
101
        $this->bcc = $bcc;
0 ignored issues
show
Documentation Bug introduced by
It seems like $bcc of type array is incompatible with the declared type object<Sichikawa\Sendgri...er\Api\Personalize\Bcc> of property $bcc.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
102
        return $this;
103
    }
104
105
    /**
106
     * @param $email
107
     * @param null $name
108
     * @return $this
109
     */
110
    public function addBcc($email, $name = null)
111
    {
112
        $this->bcc[] = new Bcc($email, $name);
113
        return $this;
114
    }
115
116
    /**
117
     * @param string $subject
118
     * @return $this
119
     */
120
    public function setSubject($subject)
121
    {
122
        $this->subject = $subject;
123
        return $this;
124
    }
125
126
    /**
127
     * @param Headers $headers
128
     * @return $this
129
     */
130
    public function setHeaders($headers)
131
    {
132
        $this->headers = $headers;
133
        return $this;
134
    }
135
136
    /**
137
     * @param $key
138
     * @param $value
139
     * @return $this
140
     */
141
    public function addHeaders($key, $value)
142
    {
143
        if (empty($this->headers)) {
144
            $this->headers = new Headers();
145
        }
146
        $this->headers->$key = $value;
147
        return $this;
148
    }
149
150
    /**
151
     * @param array $substitutions
152
     * @return $this
153
     */
154
    public function setSubstitutions($substitutions)
155
    {
156
        $this->substitutions = $substitutions;
0 ignored issues
show
Documentation Bug introduced by
It seems like $substitutions of type array is incompatible with the declared type object<Sichikawa\Sendgri...sonalize\Substitutions> of property $substitutions.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
157
        return $this;
158
    }
159
160
    /**
161
     * @param $key
162
     * @param $value
163
     * @return $this
164
     */
165
    public function addSubstitutions($key, $value)
166
    {
167
        if (empty($this->substitutions)) {
168
            $this->substitutions = new Substitutions();
169
        }
170
        $this->substitutions[$key] = $value;
171
        return $this;
172
    }
173
174
    /**
175
     * @param $custom_args
176
     * @return $this
177
     */
178
    public function setCustomArgs($custom_args)
179
    {
180
        $this->custom_args = $custom_args;
181
        return $this;
182
    }
183
184
    /**
185
     * @param $key
186
     * @param $value
187
     * @return $this
188
     */
189
    public function addCustomArgs($key, $value)
190
    {
191
        if (empty($this->custom_args)) {
192
            $this->custom_args = new CustomArgs();
193
        }
194
        $this->custom_args[$key] = $value;
195
        return $this;
196
    }
197
198
    /**
199
     * @param int $send_at
200
     */
201
    public function setSendAt($send_at)
202
    {
203
        $this->send_at = $send_at;
204
    }
205
}
206
207