Download the PHP package fuwasegu/cache-decorator without Composer
On this page you can find all versions of the php package fuwasegu/cache-decorator. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download fuwasegu/cache-decorator
More information about fuwasegu/cache-decorator
Files in fuwasegu/cache-decorator
Package cache-decorator
Short Description A decorator for caching the results of method calls on any instance, supporting pure functions only.
License MIT
Informations about the package cache-decorator
Cache Decorator
A PHP library for implementing a cache decorator pattern, allowing easy caching of method results.
Requirements
- PHP 8.1 or higher
Installation
You can install the package via composer:
Usage
[!CAUTION] Since serialization costs can be high, caching should primarily be applied to I/O bottleneck scenarios, such as HTTP communication and relational database interactions. It is also useful for computationally expensive algorithms (e.g., full search).
Moreover, the caching driver should utilize lighter options like Redis or Memcached instead of relying on the heavier I/O operations to achieve expected performance improvements.
Here's a basic example of how to use the cache decorator:
Only pure methods can be cached.
In order to mark a method as pure, use the #[Pure]
attribute, not the #[Pure]
attribute provided by PhpStorm.
[!NOTE] The advantage of this library is that, since CacheDecorator::class internally utilizes Generics and Mixin, developers can wrap any instance without losing the experience, as the methods of the wrapped instance are still auto-completed in the IDE from the CacheDecorator instance.
Setting TTL globally
CacheDecorator class has a static property $defaultTtl
, so you can set the default TTL by
calling CacheDecorator::setDefaultTtl($ttl)
before wrapping the instance.
This default value will be used in constructors of CacheDecorator.
Especially in Laravel
In Laravel, you can use Illuminate\Cache\Repository
as the cache implementation.
Supporting multiple cache implementations
The CacheDecorator::wrap()
method supports both PSR-16 SimpleCache and PSR-6 Cache interfaces.
This means you can use either Psr\SimpleCache\CacheInterface
or Psr\Cache\CacheItemPoolInterface
implementations as the cache backend.
Example:
This flexibility allows you to use the cache implementation that best fits your project's needs.