Path: blob/master/src/infrastructure/cache/PhutilKeyValueCacheNamespace.php
12241 views
<?php12final class PhutilKeyValueCacheNamespace extends PhutilKeyValueCacheProxy {34private $namespace;56public function setNamespace($namespace) {7if (strpos($namespace, ':') !== false) {8throw new Exception(pht("Namespace can't contain colons."));9}1011$this->namespace = $namespace.':';1213return $this;14}1516public function setKeys(array $keys, $ttl = null) {17return parent::setKeys(array_combine(18$this->prefixKeys(array_keys($keys)),19$keys), $ttl);20}2122public function getKeys(array $keys) {23$results = parent::getKeys($this->prefixKeys($keys));2425if (!$results) {26return array();27}2829return array_combine(30$this->unprefixKeys(array_keys($results)),31$results);32}3334public function deleteKeys(array $keys) {35return parent::deleteKeys($this->prefixKeys($keys));36}3738private function prefixKeys(array $keys) {39if ($this->namespace == null) {40throw new Exception(pht('Namespace not set.'));41}4243$prefixed_keys = array();44foreach ($keys as $key) {45$prefixed_keys[] = $this->namespace.$key;46}4748return $prefixed_keys;49}5051private function unprefixKeys(array $keys) {52if ($this->namespace == null) {53throw new Exception(pht('Namespace not set.'));54}5556$unprefixed_keys = array();57foreach ($keys as $key) {58$unprefixed_keys[] = substr($key, strlen($this->namespace));59}6061return $unprefixed_keys;62}6364}656667