|
|
@ -7,7 +7,9 @@ |
|
|
|
|
|
|
|
|
|
|
|
namespace yii\caching; |
|
|
|
namespace yii\caching; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use Yii; |
|
|
|
use yii\base\Component; |
|
|
|
use yii\base\Component; |
|
|
|
|
|
|
|
use yii\base\InvalidConfigException; |
|
|
|
use yii\helpers\StringHelper; |
|
|
|
use yii\helpers\StringHelper; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -52,10 +54,12 @@ use yii\helpers\StringHelper; |
|
|
|
abstract class Cache extends Component implements \ArrayAccess |
|
|
|
abstract class Cache extends Component implements \ArrayAccess |
|
|
|
{ |
|
|
|
{ |
|
|
|
/** |
|
|
|
/** |
|
|
|
* @var string a string prefixed to every cache key so that it is unique. Defaults to null, meaning using |
|
|
|
* @var string a string prefixed to every cache key so that it is unique. If not set, |
|
|
|
* the value of [[Application::id]] as the key prefix. You may set this property to be an empty string |
|
|
|
* it will use a prefix generated from [[Application::id]]. You may set this property to be an empty string |
|
|
|
* if you don't want to use key prefix. It is recommended that you explicitly set this property to some |
|
|
|
* if you don't want to use key prefix. It is recommended that you explicitly set this property to some |
|
|
|
* static value if the cached data needs to be shared among multiple applications. |
|
|
|
* static value if the cached data needs to be shared among multiple applications. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* To ensure interoperability, only use alphanumeric characters should be used. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public $keyPrefix; |
|
|
|
public $keyPrefix; |
|
|
|
/** |
|
|
|
/** |
|
|
@ -78,18 +82,18 @@ abstract class Cache extends Component implements \ArrayAccess |
|
|
|
{ |
|
|
|
{ |
|
|
|
parent::init(); |
|
|
|
parent::init(); |
|
|
|
if ($this->keyPrefix === null) { |
|
|
|
if ($this->keyPrefix === null) { |
|
|
|
$this->keyPrefix = \Yii::$app->id; |
|
|
|
$this->keyPrefix = substr(md5(Yii::$app->id), 0, 5); |
|
|
|
|
|
|
|
} elseif (!ctype_alnum($this->keyPrefix)) { |
|
|
|
|
|
|
|
throw new InvalidConfigException(get_class($this) . '::keyPrefix should only contain alphanumeric characters.'); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Builds a normalized cache key from a given key. |
|
|
|
* Builds a normalized cache key from a given key. |
|
|
|
* |
|
|
|
* |
|
|
|
* The generated key contains letters and digits only, and its length is no more than 32. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* If the given key is a string containing alphanumeric characters only and no more than 32 characters, |
|
|
|
* If the given key is a string containing alphanumeric characters only and no more than 32 characters, |
|
|
|
* then the key will be returned back without change. Otherwise, a normalized key |
|
|
|
* then the key will be returned back prefixed with [[keyPrefix]]. Otherwise, a normalized key |
|
|
|
* is generated by serializing the given key and applying MD5 hashing. |
|
|
|
* is generated by serializing the given key, applying MD5 hashing, and prefixing with [[keyPrefix]]. |
|
|
|
* |
|
|
|
* |
|
|
|
* The following example builds a cache key using three parameters: |
|
|
|
* The following example builds a cache key using three parameters: |
|
|
|
* |
|
|
|
* |
|
|
@ -97,8 +101,8 @@ abstract class Cache extends Component implements \ArrayAccess |
|
|
|
* $key = $cache->buildKey(array($className, $method, $id)); |
|
|
|
* $key = $cache->buildKey(array($className, $method, $id)); |
|
|
|
* ~~~ |
|
|
|
* ~~~ |
|
|
|
* |
|
|
|
* |
|
|
|
* @param array|string $key the key to be normalized |
|
|
|
* @param mixed $key the key to be normalized |
|
|
|
* @return string the generated cache key include $this->keyPrefix |
|
|
|
* @return string the generated cache key |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function buildKey($key) |
|
|
|
public function buildKey($key) |
|
|
|
{ |
|
|
|
{ |
|
|
|