arnapou / psr-cache
Library - PSR-6, PSR-16.
v1.1.0
2024-11-24 19:31 UTC
Requires
- php: ~8.2.0 || ~8.3.0 || ~8.4.0
- arnapou/psr-clock: ^1.0
- psr/cache: ^2.0 || ^3.0
- psr/simple-cache: ^2.0 || ^3.0
Requires (Dev)
- ext-memcached: *
- ext-pcntl: *
- ext-redis: *
- friendsofphp/php-cs-fixer: ^3.52
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^2.0
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/php-code-coverage: ^11.0
- phpunit/phpunit: ^11.0
Provides
README
KISS (Keep It Simple Stupid) PSR (PHP Standards Recommendations) classes.
Installation
composer require arnapou/psr-cache
packagist 👉️ arnapou/psr-cache
Example PSR-6 Cache
KISS, here we only have PSR-6 adapter of PSR-16 Simple cache.
Note that you can inject your own PSR-20 Clock Interface.
$cache = new \Arnapou\Psr\Psr6Cache\CacheItemPool(
psr16SimpleCache: $psr16SimpleCache,
defaultTtl: 900,
);
$item = $cache->getItem('my-key');
$item->set('my-value');
$item->expiresAfter(300);
$cache->save($item);
Example PSR-16 Simple Cache
There is one thing I didn't implement from the PSR : it is the PSR key characters restriction.
Because I never saw a case during the past 12 years where it was necessary.
The only restrictions implemented are technically (ex memcached).
Implementations.
use Arnapou\Psr\Psr16SimpleCache;
// For runtime, full memory
$cache = new Psr16SimpleCache\ArraySimpleCache(defaultTtl: 900);
// Flat file cache with custom serializer and PSR-20 Clock Interface
$cache = new Psr16SimpleCache\FileSimpleCache(path: '/path/of/cache', defaultTtl: 900);
// Memcached cache with custom serializer and PSR-20 Clock Interface
$cache = new Psr16SimpleCache\MemcachedSimpleCache($memcached);
// Redis cache with custom serializer and PSR-20 Clock Interface
$cache = new Psr16SimpleCache\RedisSimpleCache($redis);
// Does nothing at all
$cache = new Psr16SimpleCache\NullSimpleCache();
Decorators.
use Arnapou\Psr\Psr16SimpleCache\Decorated;
// Helps to reduce I/Os on decorated cache by keeping in memory the values already retrieved
$cache = new Decorated\RuntimeSimpleCache($decorated);
// Helps to isolate keys in "namespaces" for instance
$cache = new Decorated\PrefixSimpleCache($decorated, 'some:prefix');
// Forces the ttl to be in the range wanted to avoid silly TTLs
$cache = new Decorated\TtlRestrictedSimpleCache($decorated, ttlMin: 60, ttlMax: 3600);
// Avoid any writing in that cache
$cache = new Decorated\ReadonlySimpleCache($decorated, throwException: true);
Php versions
Date | Ref | 8.4 | 8.3 | 8.2 |
---|---|---|---|---|
24/11/2024 | 1.1.x, main | × | × | × |
09/09/2024 | 1.0.x | × | × |