anders/slim-session

适用于 Slim 框架 3 的会话中间件和助手。

3.3.0 2017-06-05 14:49 UTC

This package is auto-updated.

Last update: 2024-09-29 05:08:02 UTC


README

这是一个简单的中间件,适用于Slim 框架 3,允许管理 PHP 内置会话,并包含一个 Helper 类来帮助您处理 $_SESSION 超全局变量。

对于 Slim 框架 2 的中间件版本,请查看此存储库中的 slim-2 分支。

安装

将此行添加到您的 composer.json 文件的 require 块中

"bryanjhv/slim-session": "~3.0"

或者,您也可以在 shell 中运行以下命令

composer require bryanjhv/slim-session:~3.0

用法

$app = new \Slim\App;
$app->add(new \Slim\Middleware\Session([
  'name' => 'dummy_session',
  'autorefresh' => true,
  'lifetime' => '1 hour'
]));

支持选项

  • lifetime:会话应持续多长时间?默认为 20 分钟。任何 strtotime 可以解析的参数都是有效的。
  • pathdomainsecurehttponly:会话 cookie 的选项。
  • name:会话 cookie 的名称。默认为 slim_session(而不是 PHP 的 PHPSESSID)。
  • autorefresh:如果希望用户活动(与服务器交互)时刷新会话,则设置为 true

会话助手

有一个 Helper 类可用,您可以选择全局注册或实例化

$container = $app->getContainer();

// Register globally to app
$container['session'] = function ($c) {
  return new \SlimSession\Helper;
};

这将提供 $app->session,因此您可以执行以下操作

$app->get('/', function ($req, $res) {
  // or $this->session if registered
  $session = new \SlimSession\Helper;

  // Check if variable exists
  $exists = $session->exists('my_key');
  $exists = isset($session->my_key);
  $exists = isset($session['my_key']);

  // Get variable value
  $my_value = $session->get('my_key', 'default');
  $my_value = $session->my_key;
  $my_value = $session['my_key'];

  // Set variable value
  $app->session->set('my_key', 'my_value');
  $session->my_key = 'my_value';
  $session['my_key'] = 'my_value';

  // Merge value recursively
  $app->session->merge('my_key', ['first' => 'value']);
  $session->merge('my_key', ['second' => ['a' => 'A']]);
  $letter_a = $session['my_key']['second']['a'];  // "A"

  // Delete variable
  $session->delete('my_key');
  unset($session->my_key);
  unset($session['my_key']);

  // Destroy session
  $session::destroy();

  // Get session id
  $id = $this->session::id();

  return $res;
});

贡献者

这里列出了主要贡献者。😄

待办事项

  • 完成 Helper 测试。(感谢 @Zemistr)
  • 针对 Slim 的特定测试(与 Slim 应用程序的集成)。

许可协议

MIT