slabphp / session-manager
SlabPHP 会话管理库
v0.1.11
2018-02-18 00:00 UTC
Requires
- ext-mbstring: ^7.0
- psr/log: ^1.0
- slabphp/component-interfaces: ^0.2
Requires (Dev)
- phpunit/phpunit: ^6.5
Suggests
- ext-mysqli: Include mysqli extension to use database session providers.
README
这个会话管理库的开发是因为我喜欢“闪存数据”的概念,并且希望有一组可重用的会话处理程序,可以在本地的会话处理系统中使用。我希望这些处理程序被嵌入到一个封装的对象中,该对象管理处理程序的生命周期,同时也透明地管理闪存数据的概念。
请参阅 SlabPHP 的主要文档,以获取有关 SlabPHP 项目的更多信息。
安装
将此库包含到您的项目中
composer require slabphp/session-manager
用法
一般步骤是创建一个处理程序,实例化一个驱动,使用驱动来处理您的会话。处理程序本身可以通过使用 ->startNativeSession() 方法实例化和激活。
文件处理程序会话
如果使用本机会话处理,文件处理程序将使用内置的会话保存目录;否则,您可能需要做如下操作
$handler = new \Slab\Session\Handlers\File();
$handler->setSavePath(ini_get('session.save_path'));
$driver = new \Slab\Session\Driver();
$driver
->setHandler($handler)
->start();
数据库处理程序会话
假设您已经打开并创建了一个 mysqli 对象,可以将它的引用传递给数据库处理程序。
$handler = new \Slab\Session\Handlers\Database\MySQL();
$handler->setDatabase($myMySQLiObject, 'databaseName', 'tableName', 'site.com');
$driver = new \Slab\Session\Driver();
$driver
->setHandler($handler)
->start();
读取和写入数据
假设您将会话驱动存储在某个位置,并在当前对象上下文中有一个名为 $session 的引用
// Will return a value if set, or false empty or not is set
$variableValue = $this->session->get('variableName');
将检索存储的值。否则,您可以用以下方式设置它
$this->session->set('variableName', 'some value');
您可以用 ->delete() 删除数据。
闪存数据
闪存数据是在会话中设置然后在下一次请求后删除的数据。您可以通过将一个变量以 @ 符号作为第一个字符来标记为闪存数据。
例如,如果您在一个回发控制器上设置了一个值
$this->session->set('@success', true);
$this->redirect('/thanks');
在下一页上,您可以读取这个闪存变量,但它不会持续超过下一个请求。所以,在您的视图控制器中,您可能可以做如下操作
if ($this->session->get('@success')) $this->displaySuccessMessage();
该页面的后续加载将没有 @success 变量,因为它已经被删除了。