-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcache.php
69 lines (54 loc) · 2.2 KB
/
cache.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
<?php
namespace Framework {
use Framework\Base as Base;
use Framework\Cache as Cache;
use Framework\Events as Events;
use Framework\Registry as Registry;
use Framework\Cache\Exception as Exception;
/**
* Factory Class which accepts initialization options, and also selects the type of returned object, based on the internal $_type property.
* It raises Cache\Exception\Argument exceptions for invalid/unsupported types, and only supports one type of cache driver, Cache\Driver\Memcached.
*/
class Cache 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.cache.initialize.before", array($this->type, $this->options));
if (!$this->type) {
$configuration = Registry::get("configuration");
if ($configuration) {
$configuration = $configuration->initialize();
$parsed = $configuration->parse("configuration/cache");
if (!empty($parsed->cache->default) && !empty($parsed->cache->default->type)) {
$this->type = $parsed->cache->default->type;
unset($parsed->cache->default->type);
$this->options = (array) $parsed->cache->default;
}
}
}
if (!$this->type) {
throw new Exception\Argument("Invalid type");
}
Events::fire("framework.cache.initialize.after", array($this->type, $this->options));
switch ($this->type) {
case "memcached": {
return new Cache\Driver\Memcached($this->options);
break;
}
default: {
throw new Exception\Argument("Invalid type");
break;
}
}
}
}
}