X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fcache%2Fclass_MemoryCache.php;h=9b827ba9a6c95ca9375bc28b2a9d6e76f496f6f2;hb=df1b3a826bc67c252efaaac93cb8e78b2cb29603;hp=a38a65bab97d0290753aca47b9dd007021bc3e12;hpb=3e1fbf30a631cf1cd64562b69228452c49e0033f;p=core.git diff --git a/inc/classes/main/cache/class_MemoryCache.php b/inc/classes/main/cache/class_MemoryCache.php index a38a65ba..9b827ba9 100644 --- a/inc/classes/main/cache/class_MemoryCache.php +++ b/inc/classes/main/cache/class_MemoryCache.php @@ -2,11 +2,11 @@ /** * A simple memory cache (similar to a registry) * - * @author Roland Haeder + * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team * @license GNU GPL 3.0 or any newer version - * @link http://www.ship-simu.org + * @link http://www.shipsimu.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -66,11 +66,31 @@ class MemoryCache extends BaseFrameworkSystem implements Cacheable { /** * Does the specified offset exist in cache? * - * @param $offset The offset we are looking for - * @return $exists Wether the offset exists + * @param $offset The offset we are looking for + * @param $arrayElement If type is array, then this element must be found + * @param $minimumCount If array element is found then this count must at least match + * @return $exists Whether the offset exists */ - public final function offsetExists ($offset) { + public function offsetExists ($offset, $arrayElement = NULL, $minimumCount = 0) { + // Is it there? $exists = $this->dataCache->offsetExists($offset); + + // So look for array element? + if (($exists === TRUE) && (!is_null($arrayElement))) { + // Get it + $array = $this->offsetGet($offset); + + // Is it an array and element is found? + if ((is_array($array)) && (isset($array[$arrayElement]))) { + // Is an array and element is found, so check count + $exists = (count($array[$arrayElement]) >= $minimumCount); + } else { + // Not found + $exists = FALSE; + } + } // END - if + + // Return status return $exists; } @@ -81,7 +101,7 @@ class MemoryCache extends BaseFrameworkSystem implements Cacheable { * @param $data Data to store in cache * @return void */ - public final function offsetSet ($offset, $data) { + public function offsetSet ($offset, $data) { $this->dataCache->offsetSet($offset, $data); } @@ -91,7 +111,7 @@ class MemoryCache extends BaseFrameworkSystem implements Cacheable { * @param $offset The offset we shall set * @return $data Data to store in cache */ - public final function offsetGet ($offset) { + public function offsetGet ($offset) { // Default is offset not found $data = NULL; @@ -99,11 +119,26 @@ class MemoryCache extends BaseFrameworkSystem implements Cacheable { if ($this->offsetExists($offset)) { // Then get the data from it $data = $this->dataCache->offsetGet($offset); - } + } // END - if // Return data return $data; } + + /** + * Purges the given cache entry + * + * @param $offset The offset we shall set + * @return void + */ + public function purgeOffset ($offset) { + // Is the offset there? + if ($this->offsetExists($offset)) { + // Purge only existing keys + //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('CACHE: Unsetting cache ' . $offset); + $this->dataCache->offsetUnset($offset); + } // END - if + } } // [EOF]