From 504089940de88220a425db21e8e133582fe15c30 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 16 Jul 2013 16:06:00 +0200 Subject: [PATCH] mamcache: implement the ArrayAccess interface --- lib/memcache/cache.php | 20 +++++++++++++++++++- tests/lib/memcache/cache.php | 22 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/lib/memcache/cache.php b/lib/memcache/cache.php index 9db69ae4104..0ad1cc7ec03 100644 --- a/lib/memcache/cache.php +++ b/lib/memcache/cache.php @@ -8,7 +8,7 @@ namespace OC\Memcache; -abstract class Cache { +abstract class Cache implements \ArrayAccess { /** * @var string $prefix */ @@ -56,4 +56,22 @@ abstract class Cache { * @return mixed */ abstract public function clear($prefix = ''); + + //implement the ArrayAccess interface + + public function offsetExists($offset) { + return $this->hasKey($offset); + } + + public function offsetSet($offset, $value) { + $this->set($offset, $value); + } + + public function offsetGet($offset) { + return $this->get($offset); + } + + public function offsetUnset($offset) { + $this->remove($offset); + } } diff --git a/tests/lib/memcache/cache.php b/tests/lib/memcache/cache.php index 2c1dbc9d2f7..e2643b9fcd9 100644 --- a/tests/lib/memcache/cache.php +++ b/tests/lib/memcache/cache.php @@ -28,6 +28,28 @@ class Cache extends \Test_Cache { $this->assertFalse($this->instance->hasKey('foo')); } + public function testArrayAccessSet() { + $this->instance['foo'] = 'bar'; + $this->assertEquals('bar', $this->instance->get('foo')); + } + + public function testArrayAccessGet() { + $this->instance->set('foo', 'bar'); + $this->assertEquals('bar', $this->instance['foo']); + } + + public function testArrayAccessExists() { + $this->assertFalse(isset($this->instance['foo'])); + $this->instance->set('foo', 'bar'); + $this->assertTrue(isset($this->instance['foo'])); + } + + public function testArrayAccessUnset() { + $this->instance->set('foo', 'bar'); + unset($this->instance['foo']); + $this->assertFalse($this->instance->hasKey('foo')); + } + public function tearDown() { if ($this->instance) { $this->instance->clear();