Skip to content

Commit 8524c4d

Browse files
committed
[php][user_email-03_move_method] Move email validation to User
1 parent ecc8bb7 commit 8524c4d

File tree

3 files changed

+39
-37
lines changed

3 files changed

+39
-37
lines changed

examples/php/php-user_email-03_move_method/src/Controller/NewsletterController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
namespace CodelyTv\Controller;
66

77
use CodelyTv\Model\Newsletter;
8+
use CodelyTv\Model\User;
89

910
final class NewsletterController
1011
{
1112
public function post(string $emailAddress): Newsletter
1213
{
13-
UserController::ensureEmailIsValid($emailAddress);
14+
User::ensureEmailIsValid($emailAddress);
1415

1516
return new Newsletter($emailAddress);
1617
}

examples/php/php-user_email-03_move_method/src/Controller/UserController.php

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,47 +5,11 @@
55
namespace CodelyTv\Controller;
66

77
use CodelyTv\Model\User;
8-
use InvalidArgumentException;
98

109
final class UserController
1110
{
1211
public function post(string $emailAddress): User
1312
{
14-
self::ensureEmailIsValid($emailAddress);
15-
1613
return new User($emailAddress);
1714
}
18-
19-
public static function ensureEmailIsValid(string $emailAddress): void
20-
{
21-
self::ensureEmailIsNotEmpty($emailAddress);
22-
self::ensureEmailIsFormattedCorrectly($emailAddress);
23-
self::ensureEmailHasCommonProvider($emailAddress);
24-
}
25-
26-
private static function ensureEmailIsNotEmpty(string $emailAddress): void
27-
{
28-
if ('' === $emailAddress) {
29-
throw new InvalidArgumentException('The email address is empty');
30-
}
31-
}
32-
33-
private static function ensureEmailIsFormattedCorrectly(string $emailAddress): void
34-
{
35-
if (!filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) {
36-
throw new InvalidArgumentException("The email address <$emailAddress> is not valid");
37-
}
38-
}
39-
40-
private static function ensureEmailHasCommonProvider(string $emailAddress): void
41-
{
42-
if (!self::emailHasCommonProvider($emailAddress)) {
43-
throw new InvalidArgumentException("The email address <$emailAddress> has not a common provider");
44-
}
45-
}
46-
47-
private static function emailHasCommonProvider(string $emailAddress): bool
48-
{
49-
return strpos($emailAddress, '@yahoo') || strpos($emailAddress, '@gmail') || strpos($emailAddress, '@outlook');
50-
}
5115
}

examples/php/php-user_email-03_move_method/src/Model/User.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,52 @@
44

55
namespace CodelyTv\Model;
66

7+
use InvalidArgumentException;
8+
79
final class User
810
{
911
private string $emailAddress;
1012

1113
public function __construct(string $emailAddress)
1214
{
15+
self::ensureEmailIsValid($emailAddress);
16+
1317
$this->emailAddress = $emailAddress;
1418
}
1519

20+
public static function ensureEmailIsValid(string $emailAddress): void
21+
{
22+
self::ensureEmailIsNotEmpty($emailAddress);
23+
self::ensureEmailIsFormattedCorrectly($emailAddress);
24+
self::ensureEmailHasCommonProvider($emailAddress);
25+
}
26+
27+
private static function ensureEmailIsNotEmpty(string $emailAddress): void
28+
{
29+
if ('' === $emailAddress) {
30+
throw new InvalidArgumentException('The email address is empty');
31+
}
32+
}
33+
34+
private static function ensureEmailIsFormattedCorrectly(string $emailAddress): void
35+
{
36+
if (!filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) {
37+
throw new InvalidArgumentException("The email address <$emailAddress> is not valid");
38+
}
39+
}
40+
41+
private static function emailHasCommonProvider(string $emailAddress): bool
42+
{
43+
return strpos($emailAddress, '@yahoo') || strpos($emailAddress, '@gmail') || strpos($emailAddress, '@outlook');
44+
}
45+
46+
private static function ensureEmailHasCommonProvider(string $emailAddress): void
47+
{
48+
if (!self::emailHasCommonProvider($emailAddress)) {
49+
throw new InvalidArgumentException("The email address <$emailAddress> has not a common provider");
50+
}
51+
}
52+
1653
public function emailAddress(): string
1754
{
1855
return $this->emailAddress;

0 commit comments

Comments
 (0)