-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSession.php
80 lines (66 loc) · 2.06 KB
/
Session.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
<?php
namespace cleveruz\phpmvc;
use cleveruz\phpmvc\interface\ISession;
class Session implements ISession
{
private const KEY_FLASH = "flash_messages";
private const KEY_VARIABLE = "variables";
public function __construct()
{
session_start();
$this->initialDefault();
$this->makeRemoveable();
}
public function hasFlash(string $key): bool
{
return isset($_SESSION[self::KEY_FLASH][$key]) ? true : false;
}
public function getFlash(string $key): mixed
{
return $_SESSION[self::KEY_FLASH][$key]["value"] ?? false;
}
public function setFlash(string $key, string|array|bool $value): void
{
$_SESSION[self::KEY_FLASH][$key]["removeable"] = false;
$_SESSION[self::KEY_FLASH][$key]["value"] = $value;
}
public function has(string $key): bool
{
return isset($_SESSION[self::KEY_VARIABLE][$key]) ? true : false;
}
public function set(string $key, string|int|array $value): void
{
$_SESSION[self::KEY_VARIABLE][$key] = $value;
}
public function get(string $key): mixed
{
return $_SESSION[self::KEY_VARIABLE][$key] ?? false;
}
public function remove(string $key): void
{
unset($_SESSION[self::KEY_VARIABLE][$key]);
}
private function makeRemoveable()
{
foreach ($_SESSION[self::KEY_FLASH] as &$flash) {
if (isset($flash["removeable"]))
$flash["removeable"] = true;
}
}
private function initialDefault()
{
if (empty($_SESSION[self::KEY_FLASH])) {
$_SESSION[self::KEY_FLASH] = [];
}
if (empty($_SESSION[self::KEY_VARIABLE])) {
$_SESSION[self::KEY_VARIABLE] = [];
}
}
public function __destruct()
{
foreach ($_SESSION[self::KEY_FLASH] as $key => $flash) {
if (isset($flash["removeable"]) && $flash["removeable"])
unset($_SESSION[self::KEY_FLASH][$key]);
}
}
}