beste/in-memory-cache
Lightweight PSR-6 in-memory cache for PHP. Ideal as a default cache implementation and for fast, dependency-free tests. Supports expirations and can use a PSR-20 clock (e.g. frozen clock) for deterministic time-based behavior.
Illuminate\Contracts\Cache\Store), enabling seamless integration with existing cache logic. The package’s adherence to PSR-6 ensures compatibility with Laravel’s Cache facade, adapters, and third-party libraries (e.g., spatie/laravel-cache).Cache::remember(), Cache::put(), and Cache::get() methods when configured as a PSR-6 driver.Cache::store() events) via PSR-6’s save()/delete() methods.cache:clear artisan command (if manually cleared).Beste\Clock\FrozenClock, aligning with Laravel’s time package and travel() helper.serialize()/unserialize(), which may fail for complex objects (e.g., closures, resources). Laravel’s serialize() helper can mitigate this, but custom serialization logic may be needed for edge cases.Cache::put('key', 'value', now()->addMinutes(1))).Cache::forget() in a scheduled job).php artisan queue:work restart, container redeploy).memory_get_usage() checks.)config/cache.php:
'drivers' => [
'in_memory' => [
'driver' => 'cache',
'store' => Beste\Cache\InMemoryCache::class,
],
],
League\PSR6\Cache\CacheItemPool to bridge Laravel’s Cache facade with the package.Cache::shouldReceive() stubs with direct Beste\Cache\InMemoryCache assertions.Beste\Cache\InMemoryCache.$cache = new Beste\Cache\InMemoryCache();
$cache->save($cache->getItem('test')->set('value'));
$this->assertTrue($cache->getItem('test')->isHit());
Beste\Clock\FrozenClock for time-sensitive tests (e.g., TTL validation)..env:
CACHE_DRIVER=in_memory
Cache::remember() for transient data like form inputs).$userInput = Cache::remember('form.inputs', now()->addMinutes(5), function () {
return request()->input();
});
$driver = config('cache.default') === 'in_memory'
? new Beste\Cache\InMemoryCache()
: Cache::store();
Cache::stats() if extended).spatie/laravel-cache.beste/clock for PSR-20 testing (not required for basic usage).save()/delete() events (e.g., Cache::store()->save()).composer.json:
composer require beste/in-memory-cache
Illuminate\Cache\CacheServiceProvider or use a package like spatie/laravel-cache for dynamic drivers.public function register()
{
$this->app->singleton('cache.in_memory', function () {
return new Beste\Cache\InMemoryCache();
});
}
config/cache.php to route in_memory driver to the package.'in_memory' => [
'driver' => 'cache',
'store' => Beste\Cache\InMemoryCache::class,
],
How can I help you explore Laravel packages today?