summaryrefslogtreecommitdiff
path: root/vendor/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php')
-rw-r--r--vendor/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php57
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);
+ }
+}