Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
1.5 kB · 65 lines
PHP
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566<?php
final class PhutilKeyValueCacheNamespace extends PhutilKeyValueCacheProxy {
private $namespace;
public function setNamespace($namespace) { if (strpos($namespace, ':') !== false) { throw new Exception(pht("Namespace can't contain colons.")); }
$this->namespace = $namespace.':';
return $this; }
public function setKeys(array $keys, $ttl = null) { return parent::setKeys(array_combine( $this->prefixKeys(array_keys($keys)), $keys), $ttl); }
public function getKeys(array $keys) { $results = parent::getKeys($this->prefixKeys($keys));
if (!$results) { return array(); }
return array_combine( $this->unprefixKeys(array_keys($results)), $results); }
public function deleteKeys(array $keys) { return parent::deleteKeys($this->prefixKeys($keys)); }
private function prefixKeys(array $keys) { if ($this->namespace == null) { throw new Exception(pht('Namespace not set.')); }
$prefixed_keys = array(); foreach ($keys as $key) { $prefixed_keys[] = $this->namespace.$key; }
return $prefixed_keys; }
private function unprefixKeys(array $keys) { if ($this->namespace == null) { throw new Exception(pht('Namespace not set.')); }
$unprefixed_keys = array(); foreach ($keys as $key) { $unprefixed_keys[] = substr($key, strlen($this->namespace)); }
return $unprefixed_keys; }
}