Skip to content

Commit 052f60b

Browse files
committed
Example
1 parent 87c2459 commit 052f60b

File tree

1 file changed

+75
-1
lines changed

1 file changed

+75
-1
lines changed

README.md

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,78 @@
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+
276

377
### New BSD License
478

0 commit comments

Comments
 (0)