-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsession.php
73 lines (57 loc) · 2.27 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
<?php
/**
* The factory class begins with the automatic configuration we recently added to Cache and Configuration.
* The "server" driver is the only one we will create and it will be returned as an instance of Session\Driver\Server.
* The Session\Driver class is virtually identical to the Cache\Driver and Configuration\Driver classes.
*
* @author Faizan Ayubi
*/
namespace Framework {
use Framework\Base as Base;
use Framework\Events as Events;
use Framework\Session as Session;
use Framework\Registry as Registry;
use Framework\Session\Exception as Exception;
class Session extends Base {
/**
* @readwrite
*/
protected $_type;
/**
* @readwrite
*/
protected $_options;
protected function _getExceptionForImplementation($method) {
return new Exception\Implementation("{$method} method not implemented");
}
public function initialize() {
Events::fire("framework.session.initialize.before", array($this->type, $this->options));
if (!$this->type) {
$configuration = Registry::get("configuration");
if ($configuration) {
$configuration = $configuration->initialize();
$parsed = $configuration->parse("configuration/session");
if (!empty($parsed->session->default) && !empty($parsed->session->default->type)) {
$this->type = $parsed->session->default->type;
unset($parsed->session->default->type);
$this->options = (array) $parsed->session->default;
}
}
}
if (!$this->type) {
throw new Exception\Argument("Invalid type");
}
Events::fire("framework.session.initialize.after", array($this->type, $this->options));
switch ($this->type) {
case "server": {
return new Session\Driver\Server($this->options);
break;
}
default: {
throw new Exception\Argument("Invalid type");
break;
}
}
}
}
}