Skip to content

Commit fe47dcb

Browse files
committed
[Mime] Remove NamedAddress
1 parent c95705f commit fe47dcb

13 files changed

+67
-130
lines changed

Address.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@
2121
/**
2222
* @author Fabien Potencier <[email protected]>
2323
*/
24-
class Address
24+
final class Address
2525
{
2626
private static $validator;
2727
private static $encoder;
2828

2929
private $address;
30+
private $name;
3031

31-
public function __construct(string $address)
32+
public function __construct(string $address, string $name = '')
3233
{
3334
if (!class_exists(EmailValidator::class)) {
3435
throw new LogicException(sprintf('The "%s" class cannot be used as it needs "%s"; try running "composer require egulias/email-validator".', __CLASS__, EmailValidator::class));
@@ -43,13 +44,19 @@ public function __construct(string $address)
4344
}
4445

4546
$this->address = $address;
47+
$this->name = $name;
4648
}
4749

4850
public function getAddress(): string
4951
{
5052
return $this->address;
5153
}
5254

55+
public function getName(): string
56+
{
57+
return $this->name;
58+
}
59+
5360
public function getEncodedAddress(): string
5461
{
5562
if (null === self::$encoder) {
@@ -61,7 +68,7 @@ public function getEncodedAddress(): string
6168

6269
public function toString(): string
6370
{
64-
return $this->getEncodedAddress();
71+
return ($n = $this->getName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
6572
}
6673

6774
/**

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ CHANGELOG
44
4.4.0
55
-----
66

7+
* [BC BREAK] Removed `NamedAddress` (`Address` now supports a name)
78
* Added PHPUnit constraints
89
* Added `AbstractPart::asDebugString()`
910

Email.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public function getSender(): ?Address
101101
}
102102

103103
/**
104-
* @param Address|NamedAddress|string ...$addresses
104+
* @param Address|string ...$addresses
105105
*
106106
* @return $this
107107
*/
@@ -111,7 +111,7 @@ public function addFrom(...$addresses)
111111
}
112112

113113
/**
114-
* @param Address|NamedAddress|string ...$addresses
114+
* @param Address|string ...$addresses
115115
*
116116
* @return $this
117117
*/
@@ -121,7 +121,7 @@ public function from(...$addresses)
121121
}
122122

123123
/**
124-
* @return (Address|NamedAddress)[]
124+
* @return Address[]
125125
*/
126126
public function getFrom(): array
127127
{
@@ -157,7 +157,7 @@ public function getReplyTo(): array
157157
}
158158

159159
/**
160-
* @param Address|NamedAddress|string ...$addresses
160+
* @param Address|string ...$addresses
161161
*
162162
* @return $this
163163
*/
@@ -167,7 +167,7 @@ public function addTo(...$addresses)
167167
}
168168

169169
/**
170-
* @param Address|NamedAddress|string ...$addresses
170+
* @param Address|string ...$addresses
171171
*
172172
* @return $this
173173
*/
@@ -177,15 +177,15 @@ public function to(...$addresses)
177177
}
178178

179179
/**
180-
* @return (Address|NamedAddress)[]
180+
* @return Address[]
181181
*/
182182
public function getTo(): array
183183
{
184184
return $this->getHeaders()->getHeaderBody('To') ?: [];
185185
}
186186

187187
/**
188-
* @param Address|NamedAddress|string ...$addresses
188+
* @param Address|string ...$addresses
189189
*
190190
* @return $this
191191
*/
@@ -205,15 +205,15 @@ public function cc(...$addresses)
205205
}
206206

207207
/**
208-
* @return (Address|NamedAddress)[]
208+
* @return Address[]
209209
*/
210210
public function getCc(): array
211211
{
212212
return $this->getHeaders()->getHeaderBody('Cc') ?: [];
213213
}
214214

215215
/**
216-
* @param Address|NamedAddress|string ...$addresses
216+
* @param Address|string ...$addresses
217217
*
218218
* @return $this
219219
*/
@@ -233,7 +233,7 @@ public function bcc(...$addresses)
233233
}
234234

235235
/**
236-
* @return (Address|NamedAddress)[]
236+
* @return Address[]
237237
*/
238238
public function getBcc(): array
239239
{
@@ -524,10 +524,10 @@ private function setHeaderBody(string $type, string $name, $body)
524524

525525
private function addListAddressHeaderBody(string $name, array $addresses)
526526
{
527-
if (!$to = $this->getHeaders()->get($name)) {
527+
if (!$header = $this->getHeaders()->get($name)) {
528528
return $this->setListAddressHeaderBody($name, $addresses);
529529
}
530-
$to->addAddresses(Address::createArray($addresses));
530+
$header->addAddresses(Address::createArray($addresses));
531531

532532
return $this;
533533
}
@@ -536,8 +536,8 @@ private function setListAddressHeaderBody(string $name, array $addresses)
536536
{
537537
$addresses = Address::createArray($addresses);
538538
$headers = $this->getHeaders();
539-
if ($to = $headers->get($name)) {
540-
$to->setAddresses($addresses);
539+
if ($header = $headers->get($name)) {
540+
$header->setAddresses($addresses);
541541
} else {
542542
$headers->addMailboxListHeader($name, $addresses);
543543
}

Header/Headers.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use Symfony\Component\Mime\Address;
1515
use Symfony\Component\Mime\Exception\LogicException;
16-
use Symfony\Component\Mime\NamedAddress;
1716

1817
/**
1918
* A collection of headers.
@@ -60,7 +59,7 @@ public function getMaxLineLength(): int
6059
}
6160

6261
/**
63-
* @param (NamedAddress|Address|string)[] $addresses
62+
* @param (Address|string)[] $addresses
6463
*
6564
* @return $this
6665
*/
@@ -70,7 +69,7 @@ public function addMailboxListHeader(string $name, array $addresses): self
7069
}
7170

7271
/**
73-
* @param NamedAddress|Address|string $address
72+
* @param Address|string $address
7473
*
7574
* @return $this
7675
*/

Header/MailboxHeader.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use Symfony\Component\Mime\Address;
1515
use Symfony\Component\Mime\Exception\RfcComplianceException;
16-
use Symfony\Component\Mime\NamedAddress;
1716

1817
/**
1918
* A Mailbox MIME Header for something like Sender (one named address).
@@ -67,7 +66,7 @@ public function getAddress(): Address
6766
public function getBodyAsString(): string
6867
{
6968
$str = $this->address->getEncodedAddress();
70-
if ($this->address instanceof NamedAddress && $name = $this->address->getName()) {
69+
if ($name = $this->address->getName()) {
7170
$str = $this->createPhrase($this, $name, $this->getCharset(), true).' <'.$str.'>';
7271
}
7372

Header/MailboxListHeader.php

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use Symfony\Component\Mime\Address;
1515
use Symfony\Component\Mime\Exception\RfcComplianceException;
16-
use Symfony\Component\Mime\NamedAddress;
1716

1817
/**
1918
* A Mailbox list MIME Header for something like From, To, Cc, and Bcc (one or more named addresses).
@@ -25,7 +24,7 @@ final class MailboxListHeader extends AbstractHeader
2524
private $addresses = [];
2625

2726
/**
28-
* @param (NamedAddress|Address)[] $addresses
27+
* @param Address[] $addresses
2928
*/
3029
public function __construct(string $name, array $addresses)
3130
{
@@ -35,7 +34,7 @@ public function __construct(string $name, array $addresses)
3534
}
3635

3736
/**
38-
* @param (NamedAddress|Address)[] $body
37+
* @param Address[] $body
3938
*
4039
* @throws RfcComplianceException
4140
*/
@@ -47,7 +46,7 @@ public function setBody($body)
4746
/**
4847
* @throws RfcComplianceException
4948
*
50-
* @return (NamedAddress|Address)[]
49+
* @return Address[]
5150
*/
5251
public function getBody()
5352
{
@@ -57,7 +56,7 @@ public function getBody()
5756
/**
5857
* Sets a list of addresses to be shown in this Header.
5958
*
60-
* @param (NamedAddress|Address)[] $addresses
59+
* @param Address[] $addresses
6160
*
6261
* @throws RfcComplianceException
6362
*/
@@ -70,7 +69,7 @@ public function setAddresses(array $addresses)
7069
/**
7170
* Sets a list of addresses to be shown in this Header.
7271
*
73-
* @param (NamedAddress|Address)[] $addresses
72+
* @param Address[] $addresses
7473
*
7574
* @throws RfcComplianceException
7675
*/
@@ -90,7 +89,7 @@ public function addAddress(Address $address)
9089
}
9190

9291
/**
93-
* @return (NamedAddress|Address)[]
92+
* @return Address[]
9493
*/
9594
public function getAddresses(): array
9695
{
@@ -109,8 +108,8 @@ public function getAddressStrings(): array
109108
$strings = [];
110109
foreach ($this->addresses as $address) {
111110
$str = $address->getEncodedAddress();
112-
if ($address instanceof NamedAddress && $name = $address->getName()) {
113-
$str = $this->createPhrase($this, $name, $this->getCharset(), empty($strings)).' <'.$str.'>';
111+
if ($name = $address->getName()) {
112+
$str = $this->createPhrase($this, $name, $this->getCharset(), !$strings).' <'.$str.'>';
114113
}
115114
$strings[] = $str;
116115
}

NamedAddress.php

Lines changed: 0 additions & 42 deletions
This file was deleted.

Tests/AddressTest.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\Mime\Address;
16-
use Symfony\Component\Mime\NamedAddress;
1716

1817
class AddressTest extends TestCase
1918
{
@@ -23,6 +22,12 @@ public function testConstructor()
2322
$this->assertEquals('fabien@symfonï.com', $a->getAddress());
2423
$this->assertEquals('[email protected]', $a->toString());
2524
$this->assertEquals('[email protected]', $a->getEncodedAddress());
25+
26+
$a = new Address('fabien@symfonï.com', 'Fabien');
27+
$this->assertEquals('Fabien', $a->getName());
28+
$this->assertEquals('fabien@symfonï.com', $a->getAddress());
29+
$this->assertEquals('Fabien <[email protected]>', $a->toString());
30+
$this->assertEquals('[email protected]', $a->getEncodedAddress());
2631
}
2732

2833
public function testConstructorWithInvalidAddress()
@@ -34,7 +39,7 @@ public function testConstructorWithInvalidAddress()
3439
public function testCreate()
3540
{
3641
$this->assertSame($a = new Address('[email protected]'), Address::create($a));
37-
$this->assertSame($b = new NamedAddress('[email protected]', 'Helene'), Address::create($b));
42+
$this->assertSame($b = new Address('[email protected]', 'Helene'), Address::create($b));
3843
$this->assertEquals($a, Address::create('[email protected]'));
3944
}
4045

@@ -47,7 +52,7 @@ public function testCreateWrongArg()
4752
public function testCreateArray()
4853
{
4954
$fabien = new Address('[email protected]');
50-
$helene = new NamedAddress('[email protected]', 'Helene');
55+
$helene = new Address('[email protected]', 'Helene');
5156
$this->assertSame([$fabien, $helene], Address::createArray([$fabien, $helene]));
5257

5358
$this->assertEquals([$fabien], Address::createArray(['[email protected]']));

0 commit comments

Comments
 (0)