Slick cache package works with cache providing services installed on your system.
It comes with support for Memcached (memcached
daemon) and File
(caching data into files) out of the box, but it also defines a driver
interface that allows you to add your own drivers to your project.
Via Composer
$ composer require slick/cache
To use a cache driver you simple need to call the Cache::get()
static
method to get an initialized cache driver. Check the following example:
use Slick\Cache\Cache;
$cache = Cache::get();
$data = $cache->get('data', false);
if (!$data) {
$data = file_get_contents("http://www.example.com/api/call.json");
$cache->set('data', $data);
}
In this example we are using the default cache driver with default options, to store some expensive API call data.
note
The default driver is Memcached with the following default options:
duration => 120
host => ‘127.0.0.1’
port => 11211
The expire amount of time is always set when you set a value on the cache driver. As mention above, the default is set to 120 seconds. Using the above example, we will set the time expire amount to 3 minutes for the data from our fictitious API call:
use Slick\Cache\Cache;
$cache = Cache::get();
$data = $cache->get('data', false);
if (!$data) {
$data = file_get_contents("http://www.example.com/api/call.json");
// Set expire to 3 minutes
$cache->set('data', $data, 3*60);
}
It is also possible to define a global expire amount of time for all
Cache::set()
like this:
use Slick\Cache\Cache;
$cache = Cache::get();
// Set global cache expire to 10 minutes
$cache->duration = 10*60;
$data = $cache->get('data', false);
if (!$data) {
$data = file_get_contents("http://www.example.com/api/call.json");
// This will use the 10 minutes setting from above
$cache->set('data', $data);
}
Set/stores a value with a given key. If no value is set in the
expire parameter the default Cache::duration
will be used.
public DriverInterface DriverInterface::set(string $key, mixed $value [, int $expire = -1])
Parameters | Type | Description |
---|---|---|
$key | string | The key where value will be stored |
$value | mixed | The value to store |
$expire | int | The live time of cache in seconds |
Return | Description |
---|---|
Slick\Cache\DriverInterface | A DriverInterface instance for chaining method calls. |
Retrieves a previously stored value. You can optionally set the value returned in case of cache driver has no value for provided key.
public mixed DriverInterface::get(string $key [, mixed $default = false])
Parameters | Type | Description |
---|---|---|
$key | string | The key where value was stored |
$default | mixed | The value returned if cache driver has no value for provided key |
Return | Description |
---|---|
mixed | The stored value or the default value if cache driver has no value for provided key |
Erase the value stored with a given key. You can use the “?” and “" wildcards to delete all matching keys. The "?" means a place holders for one unknown character, the "” is a place holder for various
public DriverInterface DriverInterface::erase(string $key)
Parameters | Type | Description |
---|---|---|
$key | string | The key where value was stored |
Return | Description |
---|---|
Slick\Cache\DriverInterface | A DriverInterface instance for chaining method calls. |
warning
The use of “?” and “*” placeholder is only implemented in the drivers that are provided by Slick cache component. If you create your own cache driver you need to handle the placeholders key search implementation.
tip
If you are implementing your own cache driver and want to have the “?” and “*” placeholders search you can extend
Slick\Cache\Driver\AbstractDriver
witch uses theDriverInterface::get()
andDriverInterface::set()
methods to achieve the wildcards key search feature.
$ vendor/bin/phpunit
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.