Documentation

Cache

Download (pdf)

Overview

A Hubzero\Cache\Manager object is available for managing cache data storage and retrieval.

The Cache service comes with a wrapper class to easily work with multiple cache storage driver instances from a single object.

$manager = new Hubzero\Cache\Manager($app);

Throughout this documentation the Cache facade will be used as it provides a convenient, terse access to the underlying implementations of the cache manager.

Drivers

A number of cache drivers are available.

Custom Drivers

The extend method on the Hubzero\Cache\Manager can be used to extend the cache facility. It is used to bind a custom driver resolver to the manager. The following example demonstrates how to register a new cache driver named "example":

Cache::extend('example', function($config)
{
    return new ExampleStore;
});

The first argument passed to the extend method is the name of the driver, which will correspond to the driver option in the config/cache.php configuration file. The second argument is a Closure that should return an Hubzero\Cache\Storage\StorageInterface instance. The closure is passed an array of configuration values.

Retrieving Items

The get method on the Cache facade is used to retrieve items from the cache. If the item does not exist in the cache, null will be returned.

$value = Cache::get('key');

A default value can be passed as a second argument to the get method. This value will be returned if the cache store fails to find an item associated with the specified key or the data had expired. The default may be also be a closure:

$value = Cache::get('key', 'default');

$value = Cache::get('key', function() { return 'default'; });

The all method can be used to retrieve all items in the cache store.

$data = Cache::all();

Checking For Item Existence

The has method may be used to determine if an item exists in the cache:

if (Cache::has('key'))
{
    //
}

Storing Items

The put method on the Cache object is used to store items in the cache. When placing an item in the cache, the number of minutes for which the value should be cached will also need to specified:

Cache::put('key', 'value', $minutes);

Alternatively, the add method will only add the item to the cache if it does not already exist in the cache store:

Cache::add('key', 'value', $minutes);

The forever method may be used to store an item in the cache permanently. These values must be manually removed from the cache using the forget method:

Cache::forever('key', 'value');

Removing Items

You may remove items from the cache using the forget method on the Cache object:

Cache::forget('key');

Everything may be removed from the cache store by calling the clean method.

Cache::clean();

To limit the clean method to specific group of cached data, such as just cached data for the Tags component, a cache group name may be passed. In the example below, this will only remove cached data for the "tags" cache group.

Cache::clean('tags');

Finally, there is a gc (for "Garbage Collection") method for removing expired data.

Cache::gc();

Last modified: