90 lines
2.3 KiB
PHP
90 lines
2.3 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Nextend\Framework\Cache;
|
||
|
|
||
|
|
||
|
use Nextend\Framework\Cache\Storage\AbstractStorage;
|
||
|
|
||
|
abstract class AbstractCache {
|
||
|
|
||
|
protected $group = '';
|
||
|
protected $isAccessible = false;
|
||
|
|
||
|
/** @var AbstractStorage */
|
||
|
public $storage;
|
||
|
|
||
|
protected $_storageEngine = 'filesystem';
|
||
|
|
||
|
/**
|
||
|
* @param string $engine
|
||
|
*
|
||
|
* @return AbstractStorage
|
||
|
*/
|
||
|
public static function getStorage($engine = "filesystem") {
|
||
|
static $storage = null;
|
||
|
if ($storage === null) {
|
||
|
$storage = array(
|
||
|
'filesystem' => new Storage\Filesystem(),
|
||
|
'database' => new Storage\Database()
|
||
|
);
|
||
|
}
|
||
|
|
||
|
return $storage[$engine];
|
||
|
}
|
||
|
|
||
|
public static function clearAll() {
|
||
|
self::getStorage('filesystem')
|
||
|
->clearAll();
|
||
|
self::getStorage('filesystem')
|
||
|
->clearAll('web');
|
||
|
}
|
||
|
|
||
|
public static function clearGroup($group) {
|
||
|
self::getStorage('filesystem')
|
||
|
->clear($group);
|
||
|
self::getStorage('filesystem')
|
||
|
->clear($group, 'web');
|
||
|
self::getStorage('database')
|
||
|
->clear($group);
|
||
|
self::getStorage('database')
|
||
|
->clear($group, 'web');
|
||
|
}
|
||
|
|
||
|
public function __construct($group, $isAccessible = false) {
|
||
|
$this->group = $group;
|
||
|
$this->isAccessible = $isAccessible;
|
||
|
$this->storage = self::getStorage($this->_storageEngine);
|
||
|
}
|
||
|
|
||
|
protected function clearCurrentGroup() {
|
||
|
$this->storage->clear($this->group, $this->getScope());
|
||
|
}
|
||
|
|
||
|
protected function getScope() {
|
||
|
if ($this->isAccessible) {
|
||
|
return 'web';
|
||
|
}
|
||
|
|
||
|
return 'notweb';
|
||
|
}
|
||
|
|
||
|
protected function exists($key) {
|
||
|
return $this->storage->exists($this->group, $key, $this->getScope());
|
||
|
}
|
||
|
|
||
|
protected function get($key) {
|
||
|
return $this->storage->get($this->group, $key, $this->getScope());
|
||
|
}
|
||
|
|
||
|
protected function set($key, $value) {
|
||
|
$this->storage->set($this->group, $key, $value, $this->getScope());
|
||
|
}
|
||
|
|
||
|
protected function getPath($key) {
|
||
|
return $this->storage->getPath($this->group, $key, $this->getScope());
|
||
|
}
|
||
|
|
||
|
protected function remove($key) {
|
||
|
return $this->storage->remove($this->group, $key, $this->getScope());
|
||
|
}
|
||
|
}
|