bryanjhv / slim-session
Slim框架4的会话中间件和辅助工具。
4.1.2
2022-04-13 05:20 UTC
Requires
- slim/slim: ^4.0
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-13 10:18:34 UTC
README
为Slim框架4提供简单中间件,允许管理PHP内置会话,并包含一个Helper
类来帮助您处理$_SESSION
全局变量。
有关Slim框架3的中间件版本,请查看本存储库中的slim-3
分支。
有关Slim框架2的中间件版本,请查看本存储库中的slim-2
分支。
安装
将此行添加到您的composer.json
文件中的require
块。
"bryanjhv/slim-session": "~4.0"
或者,在shell中运行:
composer require bryanjhv/slim-session:~4.0
用法
$app = \Slim\Factory\AppFactory::create(); $app->add( new \Slim\Middleware\Session([ 'name' => 'dummy_session', 'autorefresh' => true, 'lifetime' => '1 hour', ]) );
支持选项
lifetime
:会话应持续多久?默认为20分钟
。任何strtotime
可以解析的参数都是有效的。path
、domain
、secure
、httponly
、samesite
:会话cookie的选项。请注意,samesite
默认为'Lax'
,设置为''
以禁用。name
:会话cookie的名称。默认为slim_session
(而不是PHP的PHPSESSID
)。autorefresh
:如果用户活动(与服务器交互)发生时希望会话刷新,则为true
。handler
:自定义会话处理类或对象。必须实现PHP所需的SessionHandlerInterface
。ini_settings
:自定义会话配置的关联数组。此包的先前版本中存在一些硬编码值,可能会导致严重的性能泄漏(见#30)[ 'session.gc_divisor' => 1, 'session.gc_probability' => 1, 'session.gc_maxlifetime' => 30 * 24 * 60 * 60, ];
会话辅助工具
提供全局注册或实例化的Helper
类。
$container = new \DI\Container(); // Register globally to app $container->set('session', function () { return new \SlimSession\Helper(); }); \Slim\Factory\AppFactory::setContainer($container);
这将提供$app->get('session')
,因此您可以
$app->get('/', function ($req, $res) { // or $this->get('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->get('session')->set('my_key', 'my_value'); $session->my_key = 'my_value'; $session['my_key'] = 'my_value'; // Merge value recursively $app->get('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; });
贡献者
这里列出了主要的贡献者。😄 Here
待办事项
- 完成
Helper
测试。(感谢@Zemistr) - 针对Slim的特定测试(与Slim应用集成)。
许可协议
MIT