-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSession.php
More file actions
179 lines (152 loc) · 3.68 KB
/
Session.php
File metadata and controls
179 lines (152 loc) · 3.68 KB
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<?php
/**
* @package Flextype Components
*
* @author Sergey Romanenko <awilum@yandex.ru>
* @link http://components.flextype.org
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Flextype\Component\Session;
class Session
{
/**
* Starts the session.
*
* Session::start();
*/
public static function start()
{
// Is session already started?
if (! session_id()) {
// Start the session
return @session_start();
}
// If already started
return true;
}
/**
* Deletes one or more session variables.
*
* Session::delete('user');
*/
public static function delete()
{
// Loop all arguments
foreach (func_get_args() as $argument) {
// Array element
if (is_array($argument)) {
// Loop the keys
foreach ($argument as $key) {
// Unset session key
unset($_SESSION[(string) $key]);
}
} else {
// Remove from array
unset($_SESSION[(string) $argument]);
}
}
}
/**
* Destroys the session.
*
* Session::destroy();
*/
public static function destroy()
{
// Destroy
if (session_id()) {
session_unset();
session_destroy();
$_SESSION = array();
}
}
/**
* Checks if a session variable exists.
*
* if (Session::exists('user')) {
* // Do something...
* }
*
* @return bool
*/
public static function exists() : bool
{
// Start session if needed
if (! session_id()) {
Session::start();
}
// Loop all arguments
foreach (func_get_args() as $argument) {
// Array element
if (is_array($argument)) {
// Loop the keys
foreach ($argument as $key) {
// Does NOT exist
if (! isset($_SESSION[(string) $key])) {
return false;
}
}
} else {
// Does NOT exist
if (! isset($_SESSION[(string) $argument])) {
return false;
}
}
}
return true;
}
/**
* Gets a variable that was stored in the session.
*
* echo Session::get('user');
*
* @param string $key The key of the variable to get.
* @return mixed
*/
public static function get(string $key)
{
// Start session if needed
if (! session_id()) {
self::start();
}
// Fetch key
if (Session::exists((string) $key)) {
return $_SESSION[(string) $key];
}
// Key doesn't exist
return null;
}
/**
* Returns the sessionID.
*
* echo Session::getSessionId();
*
* @return string
*/
public static function getSessionId() : string
{
if (! session_id()) {
Session::start();
}
return session_id();
}
/**
* Stores a variable in the session.
*
* Session::set('user', 'Awilum');
*
* @param string $key The key for the variable.
* @param mixed $value The value to store.
*/
public static function set(string $key, $value)
{
// Start session if needed
if (! session_id()) {
self::start();
}
// Set key
$_SESSION[(string) $key] = $value;
}
}