X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fcache%2Fclass_MemoryCache.php;h=e8efa18bca7eb26438d2bafc0cddc49ea222ef43;hp=1b03c72311fe583f39c0d0069c053740a1e2fa36;hb=1ee35e6d96c456b8e3499bd683f1647aa28bd501;hpb=0cd57c3885f00ad77fc599e53ed2f2d5e7ac267f diff --git a/inc/classes/main/cache/class_MemoryCache.php b/inc/classes/main/cache/class_MemoryCache.php index 1b03c723..e8efa18b 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 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 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 @@ -25,7 +25,7 @@ class MemoryCache extends BaseFrameworkSystem implements Cacheable { /** * The "memory cache" is simply a wrapped object array */ - private $dataCache = null; + private $dataCache = NULL; /** * Protected constructor @@ -35,10 +35,6 @@ class MemoryCache extends BaseFrameworkSystem implements Cacheable { protected function __construct () { // Call parent constructor parent::__construct(__CLASS__); - - // Clean up a little - $this->removeNumberFormaters(); - $this->removeSystemArray(); } /** @@ -46,7 +42,7 @@ class MemoryCache extends BaseFrameworkSystem implements Cacheable { * * @return $cacheInstance An instance of this cache class */ - public final static function createMemoryCache () { + public static final function createMemoryCache () { // Get a new instance $cacheInstance = new MemoryCache(); @@ -70,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; } @@ -85,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); } @@ -95,19 +111,34 @@ 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; + $data = NULL; // Is the offset there? 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]