File tree Expand file tree Collapse file tree 1 file changed +75
-1
lines changed Expand file tree Collapse file tree 1 file changed +75
-1
lines changed Original file line number Diff line number Diff line change 1
- TODO
1
+ ### Example
2
+
3
+ ## The const way
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)
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;
20
+ }
21
+
22
+ public function getStatus()
23
+ {
24
+ return $this->status;
25
+ }
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
+
36
+ ## The Enum way:
37
+
38
+ class UserStatusEnum extends Enum
39
+ {
40
+ const INACTIVE = 0;
41
+ const ACTIVE = 1;
42
+ const DELETED = 2;
43
+
44
+ // default value
45
+ protected $value = self::INACTIVE;
46
+ }
47
+
48
+ class User
49
+ {
50
+ protected $status;
51
+
52
+ public function setStatus(UserStatusEnum $status)
53
+ {
54
+ $this->status = $status;
55
+ }
56
+
57
+ public function getStatus()
58
+ {
59
+ if (!$this->status) {
60
+ // init default status
61
+ $this->status = new UserStatusEnum();
62
+ }
63
+ return $this->status;
64
+ }
65
+
66
+ }
67
+
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)
75
+
2
76
3
77
### New BSD License
4
78
You can’t perform that action at this time.
0 commit comments