|
2 | 2 |
|
3 | 3 | ## The const way
|
4 | 4 |
|
5 |
| -class User |
6 |
| -{ |
7 |
| - const INACTIVE = 0; |
8 |
| - const ACTIVE = 1; |
9 |
| - const DELETED = 2; |
10 |
| - |
11 |
| - protected $status = 0; |
12 |
| - |
13 |
| - public function setStatus($status) |
| 5 | + class User |
14 | 6 | {
|
15 |
| - $intStatus = (int)$status; |
16 |
| - if (!in_array($intStatus, array(self::INACTIVE, self::ACTIVE, self::DELETED))) { |
17 |
| - throw new InvalidArgumentException("Invalid status {$status}"); |
| 7 | + const INACTIVE = 0; |
| 8 | + const ACTIVE = 1; |
| 9 | + const DELETED = 2; |
| 10 | + |
| 11 | + protected $status = 0; |
| 12 | + |
| 13 | + public function setStatus($status) |
| 14 | + { |
| 15 | + $intStatus = (int)$status; |
| 16 | + if (!in_array($intStatus, array(self::INACTIVE, self::ACTIVE, self::DELETED))) { |
| 17 | + throw new InvalidArgumentException("Invalid status {$status}"); |
| 18 | + } |
| 19 | + $this->status = $intStatus; |
18 | 20 | }
|
19 |
| - $this->status = $intStatus; |
20 |
| - } |
21 | 21 |
|
22 |
| - public function getStatus() |
23 |
| - { |
24 |
| - return $this->status; |
| 22 | + public function getStatus() |
| 23 | + { |
| 24 | + return $this->status; |
| 25 | + } |
25 | 26 | }
|
26 |
| -} |
27 |
| - |
28 |
| -$user = new User(); |
29 |
| -echo 'Default user status: ' . $user->getStatus() . PHP_EOL; |
30 |
| -$user->setStatus(User::ACTIVE); |
31 |
| -echo 'Changed user status: ' . $user->getStatus() . PHP_EOL; |
32 |
| -// PRINTS: |
33 |
| -// Default user status: 0 |
34 |
| -// Changed user status: 1 |
35 | 27 |
|
36 |
| -## The Enum way: |
37 |
| - |
38 |
| -class UserStatusEnum extends Enum |
39 |
| -{ |
40 |
| - const INACTIVE = 0; |
41 |
| - const ACTIVE = 1; |
42 |
| - const DELETED = 2; |
| 28 | + $user = new User(); |
| 29 | + echo 'Default user status: ' . $user->getStatus() . PHP_EOL; |
| 30 | + $user->setStatus(User::ACTIVE); |
| 31 | + echo 'Changed user status: ' . $user->getStatus() . PHP_EOL; |
43 | 32 |
|
44 |
| - // default value |
45 |
| - protected $value = self::INACTIVE; |
46 |
| -} |
| 33 | +PRINTS: |
| 34 | +Default user status: 0 |
| 35 | +Changed user status: 1 |
47 | 36 |
|
48 |
| -class User |
49 |
| -{ |
50 |
| - protected $status; |
| 37 | +## The Enum way: |
51 | 38 |
|
52 |
| - public function setStatus(UserStatusEnum $status) |
| 39 | + class UserStatusEnum extends Enum |
53 | 40 | {
|
54 |
| - $this->status = $status; |
| 41 | + const INACTIVE = 0; |
| 42 | + const ACTIVE = 1; |
| 43 | + const DELETED = 2; |
| 44 | + |
| 45 | + // default value |
| 46 | + protected $value = self::INACTIVE; |
55 | 47 | }
|
56 | 48 |
|
57 |
| - public function getStatus() |
| 49 | + class User |
58 | 50 | {
|
59 |
| - if (!$this->status) { |
60 |
| - // init default status |
61 |
| - $this->status = new UserStatusEnum(); |
| 51 | + protected $status; |
| 52 | + |
| 53 | + public function setStatus(UserStatusEnum $status) |
| 54 | + { |
| 55 | + $this->status = $status; |
| 56 | + } |
| 57 | + |
| 58 | + public function getStatus() |
| 59 | + { |
| 60 | + if (!$this->status) { |
| 61 | + // init default status |
| 62 | + $this->status = new UserStatusEnum(); |
| 63 | + } |
| 64 | + return $this->status; |
62 | 65 | }
|
63 |
| - return $this->status; |
64 | 66 | }
|
65 | 67 |
|
66 |
| -} |
| 68 | + $user = new User(); |
| 69 | + echo 'Default user status: ' . $user->getStatus() . '(' . $user->getStatus()->getValue() . ')' . PHP_EOL; |
| 70 | + $user->setStatus(new UserStatusEnum(UserStatusEnum::ACTIVE)); |
| 71 | + echo 'Changed user status: ' . $user->getStatus() . '(' . $user->getStatus()->getValue() . ')' . PHP_EOL; |
67 | 72 |
|
68 |
| -$user = new User(); |
69 |
| -echo 'Default user status: ' . $user->getStatus() . '(' . $user->getStatus()->getValue() . ')' . PHP_EOL; |
70 |
| -$user->setStatus(new UserStatusEnum(UserStatusEnum::ACTIVE)); |
71 |
| -echo 'Changed user status: ' . $user->getStatus() . '(' . $user->getStatus()->getValue() . ')' . PHP_EOL; |
72 |
| -// PRINTS: |
73 |
| -// Default user status: INACTIVE (0) |
74 |
| -// Changed user status: ACTIVE (1) |
| 73 | +PRINTS: |
| 74 | +efault user status: INACTIVE (0) |
| 75 | +hanged user status: ACTIVE (1) |
75 | 76 |
|
76 | 77 |
|
77 | 78 | ### New BSD License
|
|
0 commit comments