Skip to content

Commit abe69e1

Browse files
vitkutnydg
authored andcommitted
Cache: do not save data with negative/zero expiration (#50)
1 parent 4b66253 commit abe69e1

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/Caching/Cache.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,12 @@ public function save($key, $data, array $dependencies = NULL)
186186
if ($data === NULL) {
187187
$this->storage->remove($key);
188188
} else {
189-
$this->storage->write($key, $data, $this->completeDependencies($dependencies));
189+
$dependencies = $this->completeDependencies($dependencies);
190+
if (isset($dependencies[Cache::EXPIRATION]) && $dependencies[Cache::EXPIRATION] <= 0) {
191+
$this->storage->remove($key);
192+
} else {
193+
$this->storage->write($key, $data, $dependencies);
194+
}
190195
return $data;
191196
}
192197
}

tests/Caching/Cache.save.phpt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,17 @@ $cache->save('key', function () {
5050
$res = $cache->load('key');
5151
Assert::equal('value', $res['data']);
5252
Assert::equal($dependencies, $res['dependencies']);
53+
54+
55+
// do not save already expired data
56+
$storage = new testStorage();
57+
$cache = new Cache($storage, 'ns');
58+
$dependencies = [Cache::EXPIRATION => new DateTime];
59+
60+
$res = $cache->save('key', function () {
61+
return 'value';
62+
}, $dependencies);
63+
Assert::equal('value', $res);
64+
65+
$res = $cache->load('key');
66+
Assert::null($res);

0 commit comments

Comments
 (0)