. */ namespace SP\Core\Context; /** * Class ContextBase * * @package SP\Core\Session */ abstract class ContextBase implements ContextInterface { const APP_STATUS_UPDATED = 'updated'; const APP_STATUS_RELOADED = 'reloaded'; const APP_STATUS_INSTALLED = 'installed'; const APP_STATUS_LOGGEDOUT = 'loggedout'; /** * @var ContextCollection */ private $context; /** * @param $context * @throws ContextException */ final protected function setContextReference(&$context) { if ($this->context !== null) { throw new ContextException(__u('Contexto ya inicializado')); } if (isset($context['context']) && ($context['context'] instanceof ContextCollection) === false ) { throw new ContextException(__u('Contexto inválido')); } elseif (!isset($context['context'])) { $context['context'] = $this->context = new ContextCollection(); return; } $this->context =& $context['context']; } /** * @param ContextCollection $contextCollection * @throws ContextException */ final protected function setContext(ContextCollection $contextCollection) { if ($this->context !== null) { throw new ContextException(__u('Contexto ya inicializado')); } $this->context = $contextCollection; } /** * Devolver una variable de contexto * * @param string $key * @param mixed $default * @return mixed * @throws ContextException */ protected function getContextKey($key, $default = null) { $this->checkContext(); if (isset($this->context[$key])) { return is_numeric($default) ? (int)$this->context[$key] : $this->context[$key]; } return $default; } /** * Establecer una variable de contexto * * @param string $key El nombre de la variable * @param mixed $value El valor de la variable * @return mixed * @throws ContextException */ protected function setContextKey($key, $value) { $this->checkContext(); $this->context[$key] = $value; return $value; } /** * @throws ContextException */ private function checkContext() { if ($this->context === null) { throw new ContextException(__u('Contexto no inicializado')); } } }