-
-
Notifications
You must be signed in to change notification settings - Fork 337
/
Copy pathBase.php
119 lines (109 loc) · 2.73 KB
/
Base.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
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
<?php
/**
* Phalcon Framework
* This source file is subject to the New BSD License that is bundled
* with this package in the file docs/LICENSE.txt.
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@phalconphp.com so we can send you a copy immediately.
*
* @category Phalcon
* @package Phalcon\Mvc\Model\MetaData
* @author Nikita Vershinin <endeveit@gmail.com>
* @author Ilya Gusev <mail@igusev.ru>
* @license New BSD License
* @link http://phalconphp.com/
*/
namespace Phalcon\Mvc\Model\MetaData;
use Phalcon\Mvc\Model\MetaData;
/**
* \Phalcon\Mvc\Model\MetaData\Base
* Base class for metadata adapters.
*
* @category Phalcon
* @package Phalcon\Mvc\Model\MetaData
* @author Nikita Vershinin <endeveit@gmail.com>
* @author Ilya Gusev <mail@igusev.ru>
* @license New BSD License
* @link http://phalconphp.com/
*/
abstract class Base extends MetaData implements \Phalcon\Mvc\Model\MetaDataInterface
{
/**
* Default options for cache backend.
*
* @var array
*/
protected static $defaults = [
'lifetime' => 8600,
'prefix' => '',
];
/**
* Backend's options.
*
* @var array
*/
protected $options = null;
/**
* Class constructor.
*
* @param null|array $options
*
* @throws \Phalcon\Mvc\Model\Exception
*/
public function __construct($options = null)
{
if (is_array($options)) {
if (!isset($options['lifetime'])) {
$options['lifetime'] = self::$defaults['lifetime'];
}
if (!isset($options['prefix'])) {
$options['prefix'] = self::$defaults['prefix'];
}
}
$this->options = $options;
}
/**
* {@inheritdoc}
* @param string $key
* @return array
*/
public function read($key)
{
return $this->getCacheBackend()->get(
$this->prepareKey($key),
$this->options['lifetime']
);
}
/**
* {@inheritdoc}
*
* @param string $key
* @param array $data
*/
public function write($key, $data)
{
$this->getCacheBackend()->save(
$this->prepareKey($key),
$data,
$this->options['lifetime']
);
}
/**
* Returns the key with a prefix or other changes
*
* @param string $key
*
* @return string
*/
protected function prepareKey($key)
{
return $this->options['prefix'] . $key;
}
/**
* Returns cache backend instance.
*
* @return \Phalcon\Cache\BackendInterface
*/
abstract protected function getCacheBackend();
}