104 lines
2 KiB
PHP
104 lines
2 KiB
PHP
<?php
|
|
if (!defined('_GNUBOARD_'))
|
|
exit;
|
|
|
|
class G5_object_cache
|
|
{
|
|
public $writes = array();
|
|
public $contents = array();
|
|
public $etcs = array();
|
|
|
|
function get($type, $key, $group = 'default')
|
|
{
|
|
|
|
switch ($type) {
|
|
case 'bbs':
|
|
$datas = $this->writes;
|
|
break;
|
|
case 'content':
|
|
$datas = $this->contents;
|
|
break;
|
|
default:
|
|
$datas = $this->etcs;
|
|
break;
|
|
}
|
|
|
|
if ($this->exists($type, $key, $group)) {
|
|
if (is_object($datas[$group][$key]))
|
|
return clone $datas[$group][$key];
|
|
else
|
|
return $datas[$group][$key];
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function exists($type, $key, $group = 'default')
|
|
{
|
|
|
|
$return_data = '';
|
|
|
|
switch ($type) {
|
|
case 'bbs':
|
|
$datas = $this->writes;
|
|
break;
|
|
case 'content':
|
|
$datas = $this->contents;
|
|
break;
|
|
default:
|
|
$datas = $this->etcs;
|
|
break;
|
|
}
|
|
|
|
return isset($datas[$group]) && (isset($datas[$group][$key]) || array_key_exists($key, $datas[$group]));
|
|
}
|
|
|
|
function set($type, $key, $data = array(), $group = 'default')
|
|
{
|
|
if (is_object($data))
|
|
$data = clone $data;
|
|
|
|
switch ($type) {
|
|
case 'bbs':
|
|
$this->writes[$group][$key] = $data;
|
|
break;
|
|
case 'content':
|
|
$this->contents[$group][$key] = $data;
|
|
break;
|
|
default:
|
|
$this->etcs[$group][$key] = $data;
|
|
break;
|
|
}
|
|
|
|
}
|
|
/**
|
|
* cache 데이터 제거
|
|
* @param string $type
|
|
* @param string $key
|
|
* @param string $group
|
|
* @return bool
|
|
*/
|
|
function delete($type, $key, $group = 'default')
|
|
{
|
|
if (!$this->exists($type, $key, $group)) {
|
|
return false;
|
|
}
|
|
|
|
switch ($type) {
|
|
case 'bbs':
|
|
$datas = &$this->writes;
|
|
break;
|
|
case 'content':
|
|
$datas = &$this->contents;
|
|
break;
|
|
default:
|
|
$datas = &$this->etcs;
|
|
break;
|
|
}
|
|
|
|
unset($datas[$group][$key]);
|
|
|
|
return true;
|
|
}
|
|
|
|
} //end Class;
|