123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- namespace Elgg\Cache;
- use Stash;
- /**
- * Defers to Stash for the meat of the caching logic.
- *
- * WARNING: API IN FLUX. DO NOT USE DIRECTLY.
- *
- * @package Elgg
- * @subpackage Cache
- * @since 1.10.0
- *
- * @access private
- */
- final class StashPool implements Pool {
- /** @var Stash\Pool */
- private $stash;
- /**
- * Constructor
- *
- * @param Stash\Pool $stash The Stash instance to be decorated.
- */
- public function __construct(Stash\Pool $stash) {
- $this->stash = $stash;
- }
- /** @inheritDoc */
- public function get($key, callable $callback) {
- assert(is_string($key) || is_int($key));
- $item = $this->stash->getItem((string)$key);
- $result = $item->get();
- if ($item->isMiss()) {
- $item->lock();
- $result = call_user_func($callback);
- $this->stash->save($item->set($result));
- }
- return $result;
- }
- /** @inheritDoc */
- public function invalidate($key) {
- assert(is_string($key) || is_int($key));
-
- $this->stash->getItem((string)$key)->clear();
- }
-
- /** @inheritDoc */
- public function put($key, $value) {
- assert(is_string($key) || is_int($key));
- $this->stash->getItem((string)$key)->set($value);
- }
-
- /**
- * Create an in-memory implementation of the pool.
- *
- * @return StashPool
- */
- public static function createEphemeral() {
- return new self(new Stash\Pool(new Stash\Driver\Ephemeral()));
- }
- }
|