A PSR-6 In-Memory cache that can be used as a default implementation and in tests.
Installation
composer require beste/in-memory-cache
Usage
use Beste\Cache\InMemoryCache; $cache = new InMemoryCache(); $item = $cache->getItem('key'); assert($item->isHit() === false); assert($item->get() === null); $item->set('value'); $cache->save($item); // Later... $item = $cache->getItem('key'); assert($item->isHit() === true); assert($item->get() === 'value');
You can also provide your own PSR-20 clock implementation, for example a frozen
clock for testing, for example from the beste/clock library.
use Beste\Clock\FrozenClock; use Beste\Cache\InMemoryCache; $clock = FrozenClock::fromUTC() $cache = new InMemoryCache(); $item = $cache->getItem('key'); $item->set('value')->expiresAfter(new DateInterval('PT5M')); $cache->save($item); $clock->setTo($clock->now()->add(new DateInterval('PT2M'))); assert($cache->getItem('key')->isHit() === true); $clock->setTo($clock->now()->add(new DateInterval('PT5M'))); assert($cache->getItem('key')->isHit() === false);
Running tests
License
This project is published under the MIT License.