RuntimeMemory.class.php

Go to the documentation of this file.
00001 <?php
00002 /***************************************************************************
00003  *   Copyright (C) 2005-2008 by Konstantin V. Arkhipov                     *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU Lesser General Public License as        *
00007  *   published by the Free Software Foundation; either version 3 of the    *
00008  *   License, or (at your option) any later version.                       *
00009  *                                                                         *
00010  ***************************************************************************/
00011 
00017     final class RuntimeMemory extends CachePeer
00018     {
00019         private $cache = array();
00020         
00024         public static function create()
00025         {
00026             return new self;
00027         }
00028         
00029         public function isAlive()
00030         {
00031             return true;
00032         }
00033         
00034         public function increment($key, $value)
00035         {
00036             if (isset($this->cache[$key]))
00037                 return $this->cache[$key] += $value;
00038             
00039             return null;
00040         }
00041         
00042         public function decrement($key, $value)
00043         {
00044             if (isset($this->cache[$key]))
00045                 return $this->cache[$key] -= $value;
00046             
00047             return null;
00048         }
00049         
00050         public function get($key)
00051         {
00052             if (isset($this->cache[$key]))
00053                 return $this->cache[$key];
00054             
00055             return null;
00056         }
00057         
00058         public function delete($key)
00059         {
00060             if (isset($this->cache[$key])) {
00061                 unset($this->cache[$key]);
00062                 return true;
00063             }
00064             
00065             return false;
00066         }
00067         
00071         public function clean()
00072         {
00073             $this->cache = array();
00074             
00075             return parent::clean();
00076         }
00077         
00078         public function append($key, $data)
00079         {
00080             if (isset($this->cache[$key])) {
00081                 $this->cache[$key] .= $data;
00082                 return true;
00083             }
00084             
00085             return false;
00086         }
00087         
00088         protected function store($action, $key, $value, $expires = 0)
00089         {
00090             if ($action == 'add' && isset($this->cache[$key]))
00091                 return true;
00092             elseif ($action == 'replace' && !isset($this->cache[$key]))
00093                 return false;
00094             
00095             if (is_object($value))
00096                 $this->cache[$key] = clone $value;
00097             else
00098                 $this->cache[$key] = $value;
00099             
00100             return true;
00101         }
00102     }
00103 ?>