beste / in-memory-cache
A PSR-6 In-Memory cache that can be used as a fallback implementation and/or in tests.
Fund package maintenance!
jeromegamez
Installs: 2 239 907
Dependents: 5
Suggesters: 0
Security: 0
Stars: 12
Watchers: 1
Forks: 0
Open Issues: 0
Requires (Dev)
- beste/clock: ^3.0
- beste/php-cs-fixer-config: ^3.2.0
- friendsofphp/php-cs-fixer: ^3.62.0
- phpstan/extension-installer: ^1.4.1
- phpstan/phpstan: ^1.11.10
- phpstan/phpstan-deprecation-rules: ^1.2.0
- phpstan/phpstan-phpunit: ^1.4.0
- phpstan/phpstan-strict-rules: ^1.6.0
- phpunit/phpunit: ^10.5.2 || ^11.3.1
- symfony/var-dumper: ^6.4 || ^7.1.3
Suggests
- psr/clock-implementation: Allows injecting a Clock, for example a frozen clock for testing
Provides
- psr/cache-implementation: 2.0 || 3.0
README
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
composer test
License
This project is published under the MIT License.