get("display_context_id", ""); $context = Cache::instance()->get($display_context_id, null); $context = empty($context) ? new Item_Display_Context() : unserialize($context); } else { $class_prefix = ucfirst(strtolower($display_context_name)); $class_name = "{$class_prefix}_Display_Context"; $context = new $class_name(); } return $context; } protected function __construct($display_context_name) { // $this->reset($display_context_name); $this->_data = array(); $this->_display_context_name = $display_context_name; } final function get($key) { return empty($this->_data[$key]) ? null : $this->_data[$key]; } final function set($key, $value=null) { if (is_array($key)) { if ((array)$key == $key) { $this->_data = array_merge($this->_data, $key); } else { $this->_data = array_merge($this->_data, array_fill_keys($key, $value)); } } else { $this->_data[$key] = $value; } return $this; } final function save() { $context_data = serialize($this); $display_context_id = "display_context_" . md5($context_data); Session::instance()->set("display_context_id", $display_context_id); Cache::instance()->set($display_context_id, $context_data); return $this; } abstract function display_context($item); }