-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRepository.php
137 lines (123 loc) · 2.48 KB
/
Repository.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?php
/**
* slince session library
* @author Tao <[email protected]>
*/
namespace Slince\Session;
class Repository implements \ArrayAccess, \Countable
{
/**
* session manager
*
* @var SessionManager
*/
protected $sessionManager;
function __construct(SessionManager $sessionManager)
{
$this->sessionManager = $sessionManager;
}
/**
* 判断session键值存不存在
*
* @param string $key
* @return boolean
*/
function exists($key)
{
$this->checkAndActiveSession();
return isset($_SESSION[$key]);
}
/**
* 删除特定键值
*
* @param string $key
* @return boolean
*/
function delete($key)
{
$this->checkAndActiveSession();
unset($_SESSION[$key]);
}
/**
* 清空键值
*/
function clear()
{
$this->checkAndActiveSession();
$_SESSION = [];
}
/**
* 设置某一个session
*
* @param string $key
* @param mixed $value
*/
function set($key, $value)
{
$this->checkAndActiveSession();
$_SESSION[$key] = $value;
}
/**
* 获取某一个session
*
* @param string $key
* @param string $defaultValue
* @return mixed;
*/
function get($key, $defaultValue = null)
{
$this->checkAndActiveSession();
return $this->exists($key) ? $_SESSION[$key] : $defaultValue;
}
/**
* (non-PHPdoc)
*
* @see ArrayAccess::offsetUnset()
*/
function offsetUnset($offset)
{
$this->delete($offset);
}
/**
* (non-PHPdoc)
*
* @see ArrayAccess::offsetExists()
*/
function offsetExists($offset)
{
return $this->exists($offset);
}
/**
* (non-PHPdoc)
*
* @see ArrayAccess::offsetGet()
*/
function offsetGet($offset)
{
return $this->get($offset, null);
}
/**
* (non-PHPdoc)
*
* @see ArrayAccess::offsetSet()
*/
function offsetSet($offset, $value)
{
return $this->set($offset, $value);
}
/**
* (non-PHPdoc)
*
* @see Countable::count()
*/
function count()
{
return count($_SESSION);
}
protected function checkAndActiveSession()
{
if (! $this->sessionManager->isStarted()) {
$this->sessionManager->start();
}
}
}