ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.arObjectCache.php
Go to the documentation of this file.
1 <?php
2 require_once(dirname(__FILE__) . '/../Exception/class.arException.php');
3 
12 
16  protected static $cache = array();
17 
18 
25  public static function isCached($class, $id) {
26  if (!isset(self::$cache[$class])) {
27  return false;
28  }
29  if (!isset(self::$cache[$class][$id]) || !self::$cache[$class][$id] instanceof ActiveRecord) {
30  return false;
31  }
32 
33  return in_array($id, array_keys(self::$cache[$class]));
34  }
35 
36 
40  public static function store(ActiveRecord $object) {
41  if (!isset($object->is_new)) {
42  self::$cache[get_class($object)][$object->getPrimaryFieldValue()] = $object;
43  }
44  }
45 
46 
47  public static function printStats() {
48  foreach (self::$cache as $class => $objects) {
49  echo $class;
50  echo ": ";
51  echo count($objects);
52  echo " Objects<br>";
53  }
54  }
55 
56 
64  public static function get($class, $id) {
65  if (!self::isCached($class, $id)) {
66  throw new arException(arException::GET_UNCACHED_OBJECT, $class . ': ' . $id);
67  }
68 
69  return self::$cache[$class][$id];
70  }
71 
72 
76  public static function purge(ActiveRecord $object) {
77  unset(self::$cache[get_class($object)][$object->getPrimaryFieldValue()]);
78  }
79 
80 
84  public static function flush($class_name) {
85  if ($class_name instanceof ActiveRecord) {
86  $class_name = get_class($class_name);
87  }
88  unset(self::$cache[$class_name]);
89  }
90 }
91 
92 ?>