Moodle PHP Documentation 4.5
Moodle 4.5dev (Build: 20240606) (d3ae1391abe)
cache_loader Interface Reference

Cache Loader. More...

Inheritance diagram for cache_loader:
cache cache_application cache_disabled cache_request cache_session

Public Member Functions

 delete ($key, $recurse=true)
 Delete the given key from the cache.
 
 delete_many (array $keys, $recurse=true)
 Delete all of the given keys from the cache.
 
 get ($key, $strictness=IGNORE_MISSING)
 Retrieves the value for the given key from the cache.
 
 get_many (array $keys, $strictness=IGNORE_MISSING)
 Retrieves an array of values for an array of keys.
 
 get_versioned ($key, int $requiredversion, int $strictness=IGNORE_MISSING, &$actualversion=null)
 Retrieves the value and actual version for the given key, with at least the required version.
 
 has ($key)
 Test is a cache has a key.
 
 has_all (array $keys)
 Test is a cache has all of the given keys.
 
 has_any (array $keys)
 Test if a cache has at least one of the given keys.
 
 set ($key, $data)
 Sends a key => value pair to the cache.
 
 set_many (array $keyvaluearray)
 Sends several key => value pairs to the cache.
 
 set_versioned ($key, int $version, $data)
 Sets the value for the given key with the given version.
 

Detailed Description

Cache Loader.

This cache loader interface provides the required structure for classes that wish to be interacted with as a means of accessing and interacting with a cache.

Can be implemented by any class wishing to be a cache loader.

Member Function Documentation

◆ delete()

cache_loader::delete ( $key,
$recurse = true )

Delete the given key from the cache.

Parameters
string | int$keyThe key to delete.
bool$recurseWhen set to true the key will also be deleted from all stacked cache loaders and their stores. This happens by default and ensure that all the caches are consistent. It is NOT recommended to change this.
Return values
boolTrue of success, false otherwise.

Implemented in cache, cache_application, cache_disabled, and cache_session.

◆ delete_many()

cache_loader::delete_many ( array $keys,
$recurse = true )

Delete all of the given keys from the cache.

Parameters
array$keysThe key to delete.
bool$recurseWhen set to true the key will also be deleted from all stacked cache loaders and their stores. This happens by default and ensure that all the caches are consistent. It is NOT recommended to change this.
Return values
intThe number of items successfully deleted.

Implemented in cache, cache_application, cache_disabled, and cache_session.

◆ get()

cache_loader::get ( $key,
$strictness = IGNORE_MISSING )

Retrieves the value for the given key from the cache.

Parameters
string | int$keyThe key for the data being requested.
int$strictnessOne of IGNORE_MISSING or MUST_EXIST.
Return values
mixedThe data retrieved from the cache, or false if the key did not exist within the cache. If MUST_EXIST was used then an exception will be thrown if the key does not exist within the cache.

Implemented in cache.

◆ get_many()

cache_loader::get_many ( array $keys,
$strictness = IGNORE_MISSING )

Retrieves an array of values for an array of keys.

Using this function comes with potential performance implications. Not all cache stores will support get_many/set_many operations and in order to replicate this functionality will call the equivalent singular method for each item provided. This should not deter you from using this function as there is a performance benefit in situations where the cache store does support it, but you should be aware of this fact.

Parameters
array$keysThe keys of the data being requested.
int$strictnessOne of IGNORE_MISSING or MUST_EXIST.
Return values
arrayAn array of key value pairs for the items that could be retrieved from the cache. If MUST_EXIST was used and not all keys existed within the cache then an exception will be thrown. Otherwise any key that did not exist will have a data value of false within the results.

Implemented in cache, cache_disabled, and cache_session.

◆ get_versioned()

cache_loader::get_versioned ( $key,
int $requiredversion,
int $strictness = IGNORE_MISSING,
& $actualversion = null )

Retrieves the value and actual version for the given key, with at least the required version.

If there is no value for the key, or there is a value but it doesn't have the required version, then this function will return false (or throw an exception if you set strictness to MUST_EXIST).

This function can be used to make it easier to support localisable caches (where the cache could be stored on a local server as well as a shared cache). Specifying the version means that it will automatically retrieve the correct version if available, either from the local server or [if that has an older version] from the shared server.

If the cached version is newer than specified version, it will be returned regardless. For example, if you request version 4, but the locally cached version is 5, it will be returned. If you request version 6, and the locally cached version is 5, then the system will look in higher-level caches (if any); if there still isn't a version 6 or greater, it will return null.

You must use this function if you use set_versioned.

Parameters
string | int$keyThe key for the data being requested.
int$requiredversionMinimum required version of the data
int$strictnessOne of IGNORE_MISSING or MUST_EXIST.
mixed$actualversionIf specified, will be set to the actual version number retrieved
Return values
mixedData from the cache, or false if the key did not exist or was too old

Implemented in cache.

◆ has()

cache_loader::has ( $key)

Test is a cache has a key.

The use of the has methods is strongly discouraged. In a high load environment the cache may well change between the test and any subsequent action (get, set, delete etc). Instead it is recommended to write your code in such a way they it performs the following steps:

  1. Attempt to retrieve the information.
  2. Generate the information.
  3. Attempt to set the information

Its also worth mentioning that not all stores support key tests. For stores that don't support key tests this functionality is mimicked by using the equivalent get method. Just one more reason you should not use these methods unless you have a very good reason to do so.

Parameters
string | int$key
Return values
boolTrue if the cache has the requested key, false otherwise.

◆ has_all()

cache_loader::has_all ( array $keys)

Test is a cache has all of the given keys.

It is strongly recommended to avoid the use of this function if not absolutely required. In a high load environment the cache may well change between the test and any subsequent action (get, set, delete etc).

Its also worth mentioning that not all stores support key tests. For stores that don't support key tests this functionality is mimicked by using the equivalent get method. Just one more reason you should not use these methods unless you have a very good reason to do so.

Parameters
array$keys
Return values
boolTrue if the cache has all of the given keys, false otherwise.

Implemented in cache, cache_disabled, and cache_session.

◆ has_any()

cache_loader::has_any ( array $keys)

Test if a cache has at least one of the given keys.

It is strongly recommended to avoid the use of this function if not absolutely required. In a high load environment the cache may well change between the test and any subsequent action (get, set, delete etc).

Its also worth mentioning that not all stores support key tests. For stores that don't support key tests this functionality is mimicked by using the equivalent get method. Just one more reason you should not use these methods unless you have a very good reason to do so.

Parameters
array$keys
Return values
boolTrue if the cache has at least one of the given keys

Implemented in cache, cache_disabled, and cache_session.

◆ set()

cache_loader::set ( $key,
$data )

Sends a key => value pair to the cache.

// This code will add four entries to the cache, one for each url. $cache->set('main', 'http://moodle.org'); $cache->set('docs', 'http://docs.moodle.org'); $cache->set('tracker', 'http://tracker.moodle.org'); $cache->set('qa', 'http://qa.moodle.net');

Parameters
string | int$keyThe key for the data being requested.
mixed$dataThe data to set against the key.
Return values
boolTrue on success, false otherwise.

Implemented in cache, and cache_session.

◆ set_many()

cache_loader::set_many ( array $keyvaluearray)

Sends several key => value pairs to the cache.

Using this function comes with potential performance implications. Not all cache stores will support get_many/set_many operations and in order to replicate this functionality will call the equivalent singular method for each item provided. This should not deter you from using this function as there is a performance benefit in situations where the cache store does support it, but you should be aware of this fact.

// This code will add four entries to the cache, one for each url. $cache->set_many(array( 'main' => 'http://moodle.org', 'docs' => 'http://docs.moodle.org', 'tracker' => 'http://tracker.moodle.org', 'qa' => ''http://qa.moodle.net' ));

Parameters
array$keyvaluearrayAn array of key => value pairs to send to the cache.
Return values
intThe number of items successfully set. It is up to the developer to check this matches the number of items. ... if they care that is.

Implemented in cache, cache_application, cache_disabled, and cache_session.

◆ set_versioned()

cache_loader::set_versioned ( $key,
int $version,
$data )

Sets the value for the given key with the given version.

The cache does not store multiple versions - any existing version will be overwritten with this one. This function should only be used if there is a known 'current version' (e.g. stored in a database table). It only ensures that the cache does not return outdated data.

This function can be used to help implement localisable caches (where the cache could be stored on a local server as well as a shared cache). The version will be recorded alongside the item and get_versioned will always return the correct version.

The version number must be an integer that always increases. This could be based on the current time, or a stored value that increases by 1 each time it changes, etc.

If you use this function you must use get_versioned to retrieve the data.

Parameters
string | int$keyThe key for the data being set.
int$versionInteger for the version of the data
mixed$dataThe data to set against the key.
Return values
boolTrue on success, false otherwise.

Implemented in cache.


The documentation for this interface was generated from the following file: