Hoa central
Cache.php
Go to the documentation of this file.
1 <?php
2 
37 namespace Hoa\Cache;
38 
39 use Hoa\Core;
40 
48 abstract class Cache implements Core\Parameter\Parameterizable
49 {
55  const CLEAN_ALL = -1;
56 
62  const CLEAN_EXPIRED = 0;
63 
69  const CLEAN_USER = 1;
70 
76  private $_parameters = null;
77 
83  protected static $_id = [];
84 
85 
86 
93  public function __construct(Array $parameters = [])
94  {
95  $this->_parameters = new Core\Parameter(
96  __CLASS__,
97  [
98  'id' => null
99  ],
100  [
101  'lifetime' => 3600,
102  'serialize_content' => true,
103  'make_id_with.cookie' => true,
104  'make_id_with.files' => true,
105  'make_id_with.get' => true,
106  'make_id_with.post' => true,
107  'make_id_with.server' => false,
108  'make_id_with.session' => true,
109 
110  'apc' => '',
111 
112  'eaccelerator' => '',
113 
114  'file.cache_directory' => 'hoa://Data/Variable/Cache/(:id:).ca',
115  'file.compress.active' => true,
116  'file.compress.level' => true,
117 
118  'memcache.compress.active' => true,
119  'memcache.database.host' => '127.0.0.1',
120  'memcache.database.port' => 11211,
121  'memcache.database.persistent' => true,
122 
123  'sqlite.cache_directory' => 'hoa://Data/Variable/Cache/Cache.db',
129  'sqlite.database.host' => '127.0.0.1',
130 
131  'xcache' => '',
132 
133  'zendplatform' => ''
134  ]
135  );
136 
137  $this->_parameters->setParameters($parameters);
138 
139  return;
140  }
141 
147  public function getParameters()
148  {
149  return $this->_parameters;
150  }
151 
162  protected function makeId($id = null)
163  {
164  $_id = $id;
165 
166  if (true === $this->_parameters->getParameter('make_id_with.cookie') &&
167  isset($_COOKIE)) {
168  $_id .= serialize($this->ksort($_COOKIE));
169  }
170 
171  if (true === $this->_parameters->getParameter('make_id_with.files') &&
172  isset($_FILES)) {
173  $_id .= serialize($this->ksort($_FILES));
174  }
175 
176  if (true === $this->_parameters->getParameter('make_id_with.get') &&
177  isset($_GET)) {
178  $_id .= serialize($this->ksort($_GET));
179  }
180 
181  if (true === $this->_parameters->getParameter('make_id_with.post') &&
182  isset($_POST)) {
183  $_id .= serialize($this->ksort($_POST));
184  }
185 
186  if (true === $this->_parameters->getParameter('make_id_with.server') &&
187  isset($_SERVER)) {
188  $_id .= serialize($this->ksort($_SERVER));
189  }
190 
191  if (true === $this->_parameters->getParameter('make_id_with.session') &&
192  isset($_SESSION)) {
193  $_id .= serialize($this->ksort($_SESSION));
194  }
195 
196  return self::$_id[$id] = md5($id . $_id);
197  }
198 
205  protected function setId($id)
206  {
207  $old = $this->_parameters->getKeyword('id');
208  $this->_parameters->setKeyword('id', $id);
209 
210  return $old;
211  }
212 
219  protected function getId()
220  {
221  end(self::$_id);
222 
223  return key(self::$_id);
224  }
225 
232  protected function getIdMd5()
233  {
234  end(self::$_id);
235 
236  return current(self::$_id);
237  }
238 
245  protected function removeId()
246  {
247  unset(self::$_id[$this->getId()]);
248 
249  return;
250  }
251 
258  public function ksort(Array &$array)
259  {
260  ksort($array);
261  foreach ($array as $key => $value) {
262  if (is_array($value)) {
263  $array[$key] = $this->ksort($value);
264  }
265  }
266 
267  return $array;
268  }
269 }
270 
274 Core\Consistency::flexEntity('Hoa\Cache\Cache');
const CLEAN_EXPIRED
Definition: Cache.php:62
ksort(Array &$array)
Definition: Cache.php:258
static $_id
Definition: Cache.php:83
const CLEAN_ALL
Definition: Cache.php:55
__construct(Array $parameters=[])
Definition: Cache.php:93
const CLEAN_USER
Definition: Cache.php:69
makeId($id=null)
Definition: Cache.php:162