/** * Initializes the session bag. This method must not be called directly, the class calls it when its internal data is accesed * * @throws Exception */ public function initialize() { /* Ensure session object is present */ if (is_object($this->_session) === false) { if (is_object($this->_dependencyInjector) === false) { $dependencyInjector = DI::getDefault(); if (is_object($dependencyInjector) === false) { throw new Exception('A dependency injection object is required to access the \'session\' service'); } } else { $dependencyInjector = $this->_dependencyInjector; } $session = $dependencyInjector->getShared('session'); if (is_object($session) === false || $session instanceof AdapterInterface === false) { throw new Exception('Invalid session service.'); } $this->_session = $session; } $session = $this->_session; if (!is_object($session)) { $dependencyInjector = $this->_dependencyInjector; if (!is_object($dependencyInjector)) { $dependencyInjector = Di::getDefault(); } $session = $dependencyInjector->getShared('session'); $this->_session = $session; } $data = $session->get($this->_name); if (!is_array($data)) { $data = []; } $this->_data = $data; $this->_initialized = true; }
/** * \Scene\DI\FactoryDefault constructor */ public function __construct() { parent::__construct(); $this->_services = ["router" => new Service("router", "Scene\\Mvc\\Router", true), "dispatcher" => new Service("dispatcher", "Scene\\Mvc\\Dispatcher", true), "url" => new Service("url", "Scene\\Mvc\\Url", true), "response" => new Service("response", "Scene\\Http\\Response", true), "cookies" => new Service("cookies", "Scene\\Http\\Response\\Cookies", true), "request" => new Service("request", "Scene\\Http\\Request", true), "filter" => new Service("filter", "Scene\\Filter", true), "escaper" => new Service("escaper", "Scene\\Escaper", true), "security" => new Service("security", "Scene\\Security", true), "crypt" => new Service("crypt", "Scene\\Crypt", true), "tag" => new Service("tag", "Scene\\Tag", true), "session" => new Service("session", "Scene\\Session\\Adapter\\Files", true), "sessionBag" => new Service("sessionBag", "Scene\\Session\\Bag"), "eventsManager" => new Service("eventsManager", "Scene\\Events\\Manager", true)]; }
/** * Unserializes the object from a serialized string * * @param string $data * @throws Exception */ public function unserialize($data) { if (!is_string($data)) { throw new Exception('Invalid serialization data'); } $attributes = unserialize($data); if (is_array($attributes)) { /** * Obtain the default DI */ $dependencyInjector = DI::getDefault(); if (is_object($dependencyInjector) === false) { throw new Exception('A dependency injector container is required to obtain the services related to the ODM'); } /** * Update the dependency injector */ $this->_dependencyInjector = $dependencyInjector; /** * Gets the default collectionManager service */ $manager = $dependencyInjector->getShared('collectionManager'); if (!is_object($manager)) { throw new Exception("The injected service 'collectionManager' is not valid"); } /** * Update the models manager */ $this->_collectionManager = $manager; /** * Update the objects attributes */ foreach ($attributes as $key => $value) { $this->{$key} = $value; } } }