. * */ class Staple_Registry { protected static $store = array(); /** * Returns a booleon if the specified key exists in the store. * @param string $key * @return bool */ public static function isValid($key) { if(!array_key_exists('Staple', $_SESSION)) { $_SESSION['Staple'] = array(); } if(!array_key_exists('Registry', $_SESSION['Staple'])) { $_SESSION['Staple']['Registry'] = array(); } if(array_key_exists($key, $_SESSION['Staple']['Registry'])) { self::$store[$key] = $_SESSION['Staple']['Registry'][$key]; return true; } return array_key_exists($key, self::$store); } /** * Store a value or object in the registry. * @param string $key * @return multitype:|NULL */ public static function get($key) { if(!array_key_exists('Staple', $_SESSION)) { $_SESSION['Staple'] = array(); } if(!array_key_exists('Registry', $_SESSION['Staple'])) { $_SESSION['Staple']['Registry'] = array(); } if(array_key_exists($key, self::$store)) return self::$store[$key]; elseif(array_key_exists($key, $_SESSION['Staple']['Registry'])) { self::$store[$key] = $_SESSION['Staple']['Registry'][$key]; return $_SESSION['Staple']['Registry'][$key]; } else return NULL; } /** * Store a value or object in the registry. * @param string $key * @param mixed $obj * @param bool $storeInSession */ public static function set($key, $obj, $storeInSession = true) { if(!array_key_exists('Staple', $_SESSION)) { $_SESSION['Staple'] = array(); } if(!array_key_exists('Registry', $_SESSION['Staple'])) { $_SESSION['Staple']['Registry'] = array(); } //We can't store resources in the session. if(!is_resource($obj) && $storeInSession === true) { if(array_key_exists($key, $_SESSION['Staple']['Registry'])) { if($_SESSION['Staple']['Registry'][$key] !== $obj) { $_SESSION['Staple']['Registry'][$key] = $obj; } } else { $_SESSION['Staple']['Registry'][$key] = $obj; } } //Store the value locally as well. self::$store[$key] = $obj; } public function __clone() { throw new Exception('Clone is not allowed.'); } } ?>