diff options
Diffstat (limited to 'vendor/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php')
-rw-r--r-- | vendor/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/vendor/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php b/vendor/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php new file mode 100644 index 0000000..c7a3df4 --- /dev/null +++ b/vendor/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php @@ -0,0 +1,57 @@ +<?php + +namespace Guzzle\Cache; + +/** + * Cache adapter that defers to closures for implementation + */ +class ClosureCacheAdapter implements CacheAdapterInterface +{ + /** + * @var array Mapping of method names to callables + */ + protected $callables; + + /** + * The callables array is an array mapping the actions of the cache adapter to callables. + * - contains: Callable that accepts an $id and $options argument + * - delete: Callable that accepts an $id and $options argument + * - fetch: Callable that accepts an $id and $options argument + * - save: Callable that accepts an $id, $data, $lifeTime, and $options argument + * + * @param array $callables array of action names to callable + * + * @throws \InvalidArgumentException if the callable is not callable + */ + public function __construct(array $callables) + { + // Validate each key to ensure it exists and is callable + foreach (array('contains', 'delete', 'fetch', 'save') as $key) { + if (!array_key_exists($key, $callables) || !is_callable($callables[$key])) { + throw new \InvalidArgumentException("callables must contain a callable {$key} key"); + } + } + + $this->callables = $callables; + } + + public function contains($id, array $options = null) + { + return call_user_func($this->callables['contains'], $id, $options); + } + + public function delete($id, array $options = null) + { + return call_user_func($this->callables['delete'], $id, $options); + } + + public function fetch($id, array $options = null) + { + return call_user_func($this->callables['fetch'], $id, $options); + } + + public function save($id, $data, $lifeTime = false, array $options = null) + { + return call_user_func($this->callables['save'], $id, $data, $lifeTime, $options); + } +} |