/** * * @param Resources $context * @return self */ public static function generate(Resources $context) { $request = $context->getRequest(); $config = $context->config('session'); // Sets the cookie path (aka session namespace) $site = $config->value('site'); $path = rtrim($request->getRoot(), '/') . '/'; // Creates the save handler $key = trim($config->value('save_handler')); $pre = substr($key, 0, 1); if ($pre == '#') { $resource = trim(substr($key, 1)); $handler = $context->get($resource); } elseif ($key) { if ($pre == '~') { $key = static::getDefaultNamespace() . '\\' . trim(substr($key, 1)); } $handler = $context->create($key); } else { $handler = null; } if ($handler instanceof DbSaveHandler) { $handler->setSite($site)->setPath($path); } // Create the manager and registers the save handler $manager = new static(); if ($handler) { $manager->registerSaveHandler($handler); } return $manager; }