nolikein / cache
Create and manage cache content. Respecting the PHP PSR-6
1.0.1
2020-11-03 17:42 UTC
Requires
- php: ^7.3
- psr/cache: ^1.0.1
- psr/http-factory: ^1.0.0
Requires (Dev)
- nolikein/http-message: ^1.0.0
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-10-29 05:47:28 UTC
README
Description
This librairy is inspired from PHP PSR-6. It allows you to create cache content. You have to create Items
object which contain data and registering them to an object named a Pool
.
Installation
Composer from bash
composer require nolikein/cache ^1.0.0
Composer from Docker:
docker run --rm --interactive --tty -v $PWD:/app composer require nolikein/cache ^1.0.0
Usage
Level 1 - Basic using
use Nolikein\Cache\Item;
use Nolikein\Cache\Pool;
// Select a cache directory by creating its manager
$pool = new Pool(__DIR__ . '/go_to_your_cache_directory');
// Create a cache element with data and an expiration time
$element = new item($name='aSuperName', $content='The data of my cache element', $expireAt=(new \Datetime('tomorrow'))); // expire tomorrow
// Register an element:
$pool->save($element);
// Clear all cache content from the cache directory:
$pool->clear();
Level 2 - Control everything =D
use Nolikein\Cache\Item;
use Nolikein\Cache\Pool;
// Select a cache directory by creating its manager
$pool = new Pool(__DIR__ . '/go_to_your_cache_directory');
// Multiple mean to construct the object
$element = new item($name='aSuperName', $content='Hello world !', $expireAt=(new \Datetime('tomorrow'))); // expire tomorrow
$element = new item($name='aSuperName', $content=150, $expireAfter=3600); // expire after 3600 seconds
$element = new item($name='aSuperName', $content=$myObject, $expireAfter=(new \DateInterval('PT10S'))); // expire after 10 seconds
// NOTE : You cannot set an anonymous class as a content. You are only able to set an object from a declared class.
// Methods of a cache item:
// Gets its name
$item->getKey();
// Gets its content/data if the element has not expired
$item->get();
// Tells if the element has expired
$item->isHit();
// Set a new content/data
$item->set($content);
// Set an expiration time
// From an object implementing \DatetimeInterface
$item->expiresAt((new \Datetime('tomorrow')));
// From an int (which represent the interval from now in seconds)
$item->expiresAfter(3600);
// From a \DateInterval object
$item->expiresAfter((new \DateInterval('PT10S')));
// Register an element dynamically in the pool but not in a file:
$pool->saveDeferred($element);
// If you want to register all deferred/dynamic content in files:
$pool->commit();
// NOTE: the clear() method will delete ALL deferred/dynamic content AND cache files
$pool->clear();
Contributing
I have no method to give to you if you want to contribute. Just talk me as a human.
Licence
The project is under lincence MIT.