/** * Get cache data * * @param Charcoal_String $key string name to identify cached data * @param Charcoal_String $type_name_checked checks type(class/interface) if not NULL */ public function getCache($key, Charcoal_String $type_name_checked = NULL) { // Charcoal_ParamTrait::validateString( 1, $key ); // Charcoal_ParamTrait::validateString( 2, $type_name_checked, TRUE ); try { $type_name_checked = us($type_name_checked); $cached_data = Charcoal_Cache::get($key); $type_check = $cached_data instanceof Charcoal_Object; if (!$type_check) { $actual_type = get_class($cached_data); log_warning("system, debug, cache", "cache", "cache type mismatch: expected=[Charcoal_Object] actual=[{$actual_type}]"); return FALSE; } if ($cached_data !== FALSE && $type_name_checked !== NULL) { $type_check = $cached_data instanceof $type_name_checked; if (!$type_check) { $actual_type = get_class($cached_data); log_warning("system, debug, cache", "cache", "cache type mismatch: expected=[{$type_name_checked}] actual=[{$actual_type}]"); return FALSE; } } return $cached_data; } catch (Exception $ex) { _catch($ex); _throw(new Charcoal_EventContextException(__METHOD__ . '() failed.', $ex)); } }
/** * テスト */ public function test($action, $context) { $action = us($action); $cache_driver = Charcoal_Factory::createObject(s('memcache'), s('cache_driver'), s('Charcoal_ICacheDriver')); Charcoal_Cache::register(s('memcache'), $cache_driver); switch ($action) { case "get_empty_data": Charcoal_Cache::delete(s('foo')); $value = Charcoal_Cache::get(s('foo')); $this->assertEquals(FALSE, $value); return TRUE; case "get_integer_data": Charcoal_Cache::set(s('foo'), i(100)); $value = Charcoal_Cache::get(s('foo')); $this->assertEquals(i(100), $value); return TRUE; case "get_string_data": Charcoal_Cache::set(s('foo'), s('bar')); $value = Charcoal_Cache::get(s('foo')); $this->assertEquals(s('bar'), $value); return TRUE; case "get_array_data": $data = array('foo' => 100, 'bar' => 'baz'); Charcoal_Cache::set(s('foo'), v($data)); $value = Charcoal_Cache::get(s('foo')); $this->assertEquals(v($data), $value); return TRUE; case "get_boolean_data": Charcoal_Cache::set(s('foo'), b(TRUE)); $value = Charcoal_Cache::get(s('foo')); $this->assertEquals(b(TRUE), $value); Charcoal_Cache::set(s('foo'), b(FALSE)); $value = Charcoal_Cache::get(s('foo')); $this->assertEquals(b(FALSE), $value); return TRUE; case "get_float_data": Charcoal_Cache::set(s('foo'), f(3.14)); $value = Charcoal_Cache::get(s('foo')); $this->assertEquals(f(3.14), $value); return TRUE; case "get_object_data": $data = new Charcoal_DTO(); $data['foo'] = 100; $data['bar'] = 'test'; Charcoal_Cache::set(s('foo'), $data); $value = Charcoal_Cache::get(s('foo')); echo "value:" . print_r($value, true) . eol(); $this->assertEquals($data, $value); return TRUE; } return FALSE; }