示例#1
0
 /**
  * Parses the key turning it into a string (or array is required) suitable to be passed to the cache store.
  *
  * @param string|int $key As passed to get|set|delete etc.
  * @return string|array String unless the store supports multi-identifiers in which case an array if returned.
  */
 protected function parse_key($key)
 {
     // First up if the store supports multiple keys we'll go with that.
     if ($this->store->supports_multiple_identifiers()) {
         $result = $this->definition->generate_multi_key_parts();
         $result['key'] = $key;
         return $result;
     }
     // If not we need to generate a hash and to for that we use the cache_helper.
     return cache_helper::hash_key($key, $this->definition);
 }
示例#2
0
 /**
  * Test the hash_key functionality.
  */
 public function test_hash_key()
 {
     global $CFG;
     $currentdebugging = $CFG->debug;
     $CFG->debug = E_ALL;
     // First with simplekeys
     $instance = cache_config_phpunittest::instance(true);
     $instance->phpunit_add_definition('phpunit/hashtest', array('mode' => cache_store::MODE_APPLICATION, 'component' => 'phpunit', 'area' => 'hashtest', 'simplekeys' => true));
     $factory = cache_factory::instance();
     $definition = $factory->create_definition('phpunit', 'hashtest');
     $result = cache_helper::hash_key('test', $definition);
     $this->assertEquals('test-' . $definition->generate_single_key_prefix(), $result);
     try {
         cache_helper::hash_key('test/test', $definition);
         $this->fail('Invalid key was allowed, you should see this.');
     } catch (coding_exception $e) {
         $this->assertEquals('test/test', $e->debuginfo);
     }
     // Second without simple keys
     $instance->phpunit_add_definition('phpunit/hashtest2', array('mode' => cache_store::MODE_APPLICATION, 'component' => 'phpunit', 'area' => 'hashtest2', 'simplekeys' => false));
     $definition = $factory->create_definition('phpunit', 'hashtest2');
     $result = cache_helper::hash_key('test', $definition);
     $this->assertEquals(sha1($definition->generate_single_key_prefix() . '-test'), $result);
     $result = cache_helper::hash_key('test/test', $definition);
     $this->assertEquals(sha1($definition->generate_single_key_prefix() . '-test/test'), $result);
     $CFG->debug = $currentdebugging;
 }