Joomla Platform  13.1
Documentation des API du framework Joomla Platform
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Pages
Référence de la classe JCache

Liste de tous les membres

Fonctions membres publiques

 __construct ($options)
 setCaching ($enabled)
 getCaching ()
 setLifeTime ($lt)
 get ($id, $group=null)
 getAll ()
 store ($data, $id, $group=null)
 remove ($id, $group=null)
 clean ($group=null, $mode= 'group')
 gc ()
 lock ($id, $group=null, $locktime=null)
 unlock ($id, $group=null)
_getStorage ()

Fonctions membres publiques statiques

static getInstance ($type= 'output', $options=array())
static getStores ()
static getWorkarounds ($data, $options=array())
static setWorkarounds ($data, $options=array())
static makeId ()
static addIncludePath ($path= '')

Attributs publics

 $_options

Attributs publics statiques

static $_handler = array()

Description détaillée

Définition à la ligne 19 du fichier cache.php.


Documentation des constructeurs et destructeur

JCache::__construct (   $options)

Constructor

Paramètres:
array$optionsoptions
Depuis:
11.1

Définition à la ligne 40 du fichier cache.php.

Références JFactory\getConfig().

{
$this->_options = array(
'cachebase' => $conf->get('cache_path', JPATH_CACHE),
'lifetime' => (int) $conf->get('cachetime'),
'language' => $conf->get('language', 'en-GB'),
'storage' => $conf->get('cache_handler', ''),
'defaultgroup' => 'default',
'locking' => true,
'locktime' => 15,
'checkTime' => true,
'caching' => ($conf->get('caching') >= 1) ? true : false);
// Overwrite default options with given options
foreach ($options as $option => $value)
{
if (isset($options[$option]) && $options[$option] !== '')
{
$this->_options[$option] = $options[$option];
}
}
if (empty($this->_options['storage']))
{
$this->_options['caching'] = false;
}
}

+ Voici le graphe d'appel pour cette fonction :


Documentation des fonctions membres

& JCache::_getStorage ( )

Get the cache storage handler

Renvoie:
JCacheStorage A JCacheStorage object
Depuis:
11.1

Définition à la ligne 440 du fichier cache.php.

Références JCacheStorage\getInstance().

{
$hash = md5(serialize($this->_options));
if (isset(self::$_handler[$hash]))
{
return self::$_handler[$hash];
}
self::$_handler[$hash] = JCacheStorage::getInstance($this->_options['storage'], $this->_options);
return self::$_handler[$hash];
}

+ Voici le graphe d'appel pour cette fonction :

static JCache::addIncludePath (   $path = '')
static

Add a directory where JCache should search for handlers. You may either pass a string or an array of directories.

Paramètres:
string$pathA path to search.
Renvoie:
array An array with directory elements
Depuis:
11.1

Définition à la ligne 711 du fichier cache.php.

Références JPath\clean(), et jimport().

{
static $paths;
if (!isset($paths))
{
$paths = array();
}
if (!empty($path) && !in_array($path, $paths))
{
jimport('joomla.filesystem.path');
array_unshift($paths, JPath::clean($path));
}
return $paths;
}

+ Voici le graphe d'appel pour cette fonction :

JCache::clean (   $group = null,
  $mode = 'group' 
)

Clean cache for a group given a mode.

group mode : cleans all cache in the group notgroup mode : cleans all cache not in the group

Paramètres:
string$groupThe cache data group
string$modeThe mode for cleaning cache [group|notgroup]
Renvoie:
boolean True on success, false otherwise
Depuis:
11.1

Définition à la ligne 277 du fichier cache.php.

{
// Get the default group
$group = ($group) ? $group : $this->_options['defaultgroup'];
// Get the storage handler
$handler = $this->_getStorage();
if (!($handler instanceof Exception))
{
return $handler->clean($group, $mode);
}
return false;
}
JCache::gc ( )

Garbage collect expired cache data

Renvoie:
boolean True on success, false otherwise.
Depuis:
11.1

Définition à la ligne 298 du fichier cache.php.

{
// Get the storage handler
$handler = $this->_getStorage();
if (!($handler instanceof Exception))
{
return $handler->gc();
}
return false;
}
JCache::get (   $id,
  $group = null 
)

Get cached data by id and group

Paramètres:
string$idThe cache data id
string$groupThe cache data group
Renvoie:
mixed boolean False on failure or a cached data string
Depuis:
11.1

Définition à la ligne 182 du fichier cache.php.

{
// Get the default group
$group = ($group) ? $group : $this->_options['defaultgroup'];
// Get the storage
$handler = $this->_getStorage();
if (!($handler instanceof Exception) && $this->_options['caching'])
{
return $handler->get($id, $group, $this->_options['checkTime']);
}
return false;
}
JCache::getAll ( )

Get a list of all cached data

Renvoie:
mixed Boolean false on failure or an object with a list of cache groups and data
Depuis:
11.1

Définition à la ligne 203 du fichier cache.php.

{
// Get the storage
$handler = $this->_getStorage();
if (!($handler instanceof Exception) && $this->_options['caching'])
{
return $handler->getAll();
}
return false;
}
JCache::getCaching ( )

Get caching state

Renvoie:
boolean Caching state
Depuis:
11.1

Définition à la ligne 153 du fichier cache.php.

{
return $this->_options['caching'];
}
static JCache::getInstance (   $type = 'output',
  $options = array() 
)
static

Returns a reference to a cache adapter object, always creating it

Paramètres:
string$typeThe cache object type to instantiate
array$optionsThe array of options
Renvoie:
JCache A JCache object
Depuis:
11.1

Définition à la ligne 80 du fichier cache.php.

Références JCacheController\getInstance().

Référencé par JModelLegacy\cleanCache(), et JFactory\getCache().

{
return JCacheController::getInstance($type, $options);
}

+ Voici le graphe d'appel pour cette fonction :

+ Voici le graphe des appelants de cette fonction :

static JCache::getStores ( )
static

Get the storage handlers

Renvoie:
array An array of available storage handlers
Depuis:
11.1

Définition à la ligne 92 du fichier cache.php.

Référencé par JFormFieldCacheHandler\getOptions().

{
$handlers = array();
// Get an iterator and loop trough the driver classes.
$iterator = new DirectoryIterator(__DIR__ . '/storage');
foreach ($iterator as $file)
{
$fileName = $file->getFilename();
// Only load for php files.
// Note: DirectoryIterator::getExtension only available PHP >= 5.3.6
if (!$file->isFile()
|| substr($fileName, strrpos($fileName, '.') + 1) != 'php'
|| $fileName == 'helper.php')
{
continue;
}
// Derive the class name from the type.
$class = str_ireplace('.php', '', 'JCacheStorage' . ucfirst(trim($fileName)));
// If the class doesn't exist we have nothing left to do but look at the next type. We did our best.
if (!class_exists($class))
{
continue;
}
// Sweet! Our class exists, so now we just need to know if it passes its test method.
if ($class::isSupported())
{
// Connector names should not have file extensions.
$handlers[] = str_ireplace('.php', '', $fileName);
}
}
return $handlers;
}

+ Voici le graphe des appelants de cette fonction :

static JCache::getWorkarounds (   $data,
  $options = array() 
)
static

Perform workarounds on retrieved cached data

Paramètres:
string$dataCached data
array$optionsArray of options
Renvoie:
string Body of cached data
Depuis:
11.1

Définition à la ligne 463 du fichier cache.php.

Références JFactory\getApplication(), JFactory\getDocument(), et JSession\getFormToken().

Référencé par JCacheControllerView\get(), JCacheControllerPage\get(), JCacheControllerCallback\get(), et JDocumentHTML\getBuffer().

{
$document = JFactory::getDocument();
$body = null;
// Get the document head out of the cache.
if (isset($options['mergehead']) && $options['mergehead'] == 1 && isset($data['head']) && !empty($data['head']))
{
$document->mergeHeadData($data['head']);
}
elseif (isset($data['head']) && method_exists($document, 'setHeadData'))
{
$document->setHeadData($data['head']);
}
// If the pathway buffer is set in the cache data, get it.
if (isset($data['pathway']) && is_array($data['pathway']))
{
// Push the pathway data into the pathway object.
$pathway = $app->getPathWay();
$pathway->setPathway($data['pathway']);
}
// @todo check if the following is needed, seems like it should be in page cache
// If a module buffer is set in the cache data, get it.
if (isset($data['module']) && is_array($data['module']))
{
// Iterate through the module positions and push them into the document buffer.
foreach ($data['module'] as $name => $contents)
{
$document->setBuffer($contents, 'module', $name);
}
}
// Set cached headers.
if (isset($data['headers']) && $data['headers'])
{
foreach($data['headers'] as $header)
{
$app->setHeader($header['name'], $header['value']);
}
}
// The following code searches for a token in the cached page and replaces it with the
// proper token.
if (isset($data['body']))
{
$search = '#<input type="hidden" name="[0-9a-f]{32}" value="1" />#';
$replacement = '<input type="hidden" name="' . $token . '" value="1" />';
$data['body'] = preg_replace($search, $replacement, $data['body']);
$body = $data['body'];
}
// Get the document body out of the cache.
return $body;
}

+ Voici le graphe d'appel pour cette fonction :

+ Voici le graphe des appelants de cette fonction :

JCache::lock (   $id,
  $group = null,
  $locktime = null 
)

Set lock flag on cached item

Paramètres:
string$idThe cache data id
string$groupThe cache data group
string$locktimeThe default locktime for locking the cache.
Renvoie:
object Properties are lock and locklooped
Depuis:
11.1

Définition à la ligne 320 du fichier cache.php.

{
$returning = new stdClass;
$returning->locklooped = false;
// Get the default group
$group = ($group) ? $group : $this->_options['defaultgroup'];
// Get the default locktime
$locktime = ($locktime) ? $locktime : $this->_options['locktime'];
// Allow storage handlers to perform locking on their own
// NOTE drivers with lock need also unlock or unlocking will fail because of false $id
$handler = $this->_getStorage();
if (!($handler instanceof Exception) && $this->_options['locking'] == true && $this->_options['caching'] == true)
{
$locked = $handler->lock($id, $group, $locktime);
if ($locked !== false)
{
return $locked;
}
}
// Fallback
$curentlifetime = $this->_options['lifetime'];
// Set lifetime to locktime for storing in children
$this->_options['lifetime'] = $locktime;
$looptime = $locktime * 10;
$id2 = $id . '_lock';
if ($this->_options['locking'] == true && $this->_options['caching'] == true)
{
$data_lock = $this->get($id2, $group);
}
else
{
$data_lock = false;
$returning->locked = false;
}
if ($data_lock !== false)
{
$lock_counter = 0;
// Loop until you find that the lock has been released.
// That implies that data get from other thread has finished
while ($data_lock !== false)
{
if ($lock_counter > $looptime)
{
$returning->locked = false;
$returning->locklooped = true;
break;
}
usleep(100);
$data_lock = $this->get($id2, $group);
$lock_counter++;
}
}
if ($this->_options['locking'] == true && $this->_options['caching'] == true)
{
$returning->locked = $this->store(1, $id2, $group);
}
// Revert lifetime to previous one
$this->_options['lifetime'] = $curentlifetime;
return $returning;
}
static JCache::makeId ( )
static

Create safe id for cached data from url parameters set by plugins and framework

Renvoie:
string md5 encoded cacheid
Depuis:
11.1

Définition à la ligne 673 du fichier cache.php.

Références JFactory\getApplication().

Référencé par JCacheControllerView\_makeId(), et JCacheControllerPage\_makeId().

{
// Get url parameters set by plugins
if (!empty($app->registeredurlparams))
{
$registeredurlparams = $app->registeredurlparams;
}
// Platform defaults
$registeredurlparams->format = 'WORD';
$registeredurlparams->option = 'WORD';
$registeredurlparams->view = 'WORD';
$registeredurlparams->layout = 'WORD';
$registeredurlparams->tpl = 'CMD';
$registeredurlparams->id = 'INT';
$safeuriaddon = new stdClass;
foreach ($registeredurlparams as $key => $value)
{
$safeuriaddon->$key = $app->input->get($key, null, $value);
}
return md5(serialize($safeuriaddon));
}

+ Voici le graphe d'appel pour cette fonction :

+ Voici le graphe des appelants de cette fonction :

JCache::remove (   $id,
  $group = null 
)

Remove a cached data entry by id and group

Paramètres:
string$idThe cache data id
string$groupThe cache data group
Renvoie:
boolean True on success, false otherwise
Depuis:
11.1

Définition à la ligne 250 du fichier cache.php.

{
// Get the default group
$group = ($group) ? $group : $this->_options['defaultgroup'];
// Get the storage
$handler = $this->_getStorage();
if (!($handler instanceof Exception))
{
return $handler->remove($id, $group);
}
return false;
}
JCache::setCaching (   $enabled)

Set caching enabled state

Paramètres:
boolean$enabledTrue to enable caching
Renvoie:
void
Depuis:
11.1

Définition à la ligne 141 du fichier cache.php.

{
$this->_options['caching'] = $enabled;
}
JCache::setLifeTime (   $lt)

Set cache lifetime

Paramètres:
integer$ltCache lifetime
Renvoie:
void
Depuis:
11.1

Définition à la ligne 167 du fichier cache.php.

{
$this->_options['lifetime'] = $lt;
}
static JCache::setWorkarounds (   $data,
  $options = array() 
)
static

Create workarounded data to be cached

Paramètres:
string$dataCached data
array$optionsArray of options
Renvoie:
string Data to be cached
Depuis:
11.1

Définition à la ligne 533 du fichier cache.php.

Références JFactory\getApplication(), et JFactory\getDocument().

Référencé par JCacheControllerView\get(), JCacheControllerCallback\get(), JDocumentHTML\getBuffer(), et JCacheControllerPage\store().

{
$loptions = array(
'nopathway' => 0,
'nohead' => 0,
'nomodules' => 0,
'modulemode' => 0,
);
if (isset($options['nopathway']))
{
$loptions['nopathway'] = $options['nopathway'];
}
if (isset($options['nohead']))
{
$loptions['nohead'] = $options['nohead'];
}
if (isset($options['nomodules']))
{
$loptions['nomodules'] = $options['nomodules'];
}
if (isset($options['modulemode']))
{
$loptions['modulemode'] = $options['modulemode'];
}
$document = JFactory::getDocument();
if ($loptions['nomodules'] != 1)
{
// Get the modules buffer before component execution.
$buffer1 = $document->getBuffer();
if (!is_array($buffer1))
{
$buffer1 = array();
}
// Make sure the module buffer is an array.
if (!isset($buffer1['module']) || !is_array($buffer1['module']))
{
$buffer1['module'] = array();
}
}
// View body data
$cached['body'] = $data;
// Document head data
if ($loptions['nohead'] != 1 && method_exists($document, 'getHeadData'))
{
if ($loptions['modulemode'] == 1)
{
$headnow = $document->getHeadData();
$unset = array('title', 'description', 'link', 'links', 'metaTags');
foreach ($unset as $un)
{
unset($headnow[$un]);
unset($options['headerbefore'][$un]);
}
$cached['head'] = array();
// Only store what this module has added
foreach ($headnow as $now => $value)
{
if (isset($options['headerbefore'][$now]))
{
// We have to serialize the content of the arrays because the may contain other arrays which is a notice in PHP 5.4 and newer
$nowvalue = array_map('serialize', $headnow[$now]);
$beforevalue = array_map('serialize', $options['headerbefore'][$now]);
$newvalue = array_diff_assoc($nowvalue, $beforevalue);
$newvalue = array_map('unserialize', $newvalue);
}
else
{
$newvalue = $headnow[$now];
}
if (!empty($newvalue))
{
$cached['head'][$now] = $newvalue;
}
}
}
else
{
$cached['head'] = $document->getHeadData();
}
}
// Pathway data
if ($app->isSite() && $loptions['nopathway'] != 1)
{
$pathway = $app->getPathWay();
$cached['pathway'] = isset($data['pathway']) ? $data['pathway'] : $pathway->getPathway();
}
if ($loptions['nomodules'] != 1)
{
// @todo Check if the following is needed, seems like it should be in page cache
// Get the module buffer after component execution.
$buffer2 = $document->getBuffer();
if (!is_array($buffer2))
{
$buffer2 = array();
}
// Make sure the module buffer is an array.
if (!isset($buffer2['module']) || !is_array($buffer2['module']))
{
$buffer2['module'] = array();
}
// Compare the second module buffer against the first buffer.
$cached['module'] = array_diff_assoc($buffer2['module'], $buffer1['module']);
}
// Headers data
if (isset($options['headers']) && $options['headers'])
{
$cached['headers'] = $app->getHeaders();
}
return $cached;
}

+ Voici le graphe d'appel pour cette fonction :

+ Voici le graphe des appelants de cette fonction :

JCache::store (   $data,
  $id,
  $group = null 
)

Store the cached data by id and group

Paramètres:
mixed$dataThe data to store
string$idThe cache data id
string$groupThe cache data group
Renvoie:
boolean True if cache stored
Depuis:
11.1

Définition à la ligne 225 du fichier cache.php.

{
// Get the default group
$group = ($group) ? $group : $this->_options['defaultgroup'];
// Get the storage and store the cached data
$handler = $this->_getStorage();
if (!($handler instanceof Exception) && $this->_options['caching'])
{
$handler->_lifetime = $this->_options['lifetime'];
return $handler->store($id, $group, $data);
}
return false;
}
JCache::unlock (   $id,
  $group = null 
)

Unset lock flag on cached item

Paramètres:
string$idThe cache data id
string$groupThe cache data group
Renvoie:
boolean True on success, false otherwise.
Depuis:
11.1

Définition à la ligne 406 du fichier cache.php.

{
$unlock = false;
// Get the default group
$group = ($group) ? $group : $this->_options['defaultgroup'];
// Allow handlers to perform unlocking on their own
$handler = $this->_getStorage();
if (!($handler instanceof Exception) && $this->_options['caching'])
{
$unlocked = $handler->unlock($id, $group);
if ($unlocked !== false)
{
return $unlocked;
}
}
// Fallback
if ($this->_options['caching'])
{
$unlock = $this->remove($id . '_lock', $group);
}
return $unlock;
}

Documentation des données membres

JCache::$_handler = array()
static

Définition à la ligne 25 du fichier cache.php.

JCache::$_options

Définition à la ligne 31 du fichier cache.php.


La documentation de cette classe a été générée à partir du fichier suivant :