flush
[pharext/pharext.org] / app / Session.php
1 <?php
2
3 namespace app;
4
5 use ArrayAccess;
6 use http\Env\Response;
7 use http\Params;
8
9 class Session implements ArrayAccess
10 {
11 function __construct(Config $config, Response $response) {
12 foreach ($config->session as $key => $val) {
13 ini_set("session.$key", $val);
14 }
15 if (ini_get("session.use_cookies")) {
16 $response->addHeader("Vary", "cookie");
17 }
18 $response->addHeader("Cache-Control",
19 new Params([
20 "private" => true,
21 "must-revalidate" => true,
22 "max-age" => ini_get("session.cache_expire") * 60
23 ])
24 );
25 session_start();
26 }
27
28 function regenerateId() {
29 session_regenerate_id();
30 return $this;
31 }
32
33 function reset() {
34 $_SESSION = array();
35 session_destroy();
36 return $this;
37 }
38
39 function __debugInfo() {
40 return $_SESSION;
41 }
42
43 function &__get($p) {
44 return $_SESSION[$p];
45 }
46 function &offsetGet($o) {
47 return $_SESSION[$o];
48 }
49 function __set($p, $v) {
50 $_SESSION[$p] = $v;
51 }
52 function offsetSet($o, $v) {
53 $_SESSION[$o] = $v;
54 }
55 function __isset($p) {
56 return isset($_SESSION[$p]);
57 }
58 function offsetExists($o) {
59 return isset($_SESSION[$o]);
60 }
61 function __unset($p) {
62 unset($_SESSION[$p]);
63 }
64 function offsetUnset($o) {
65 unset($_SESSION[$o]);
66 }
67
68 }