slabphp/session-manager

SlabPHP 会话管理库

v0.1.11 2018-02-18 00:00 UTC

This package is auto-updated.

Last update: 2024-09-26 11:09:00 UTC


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 变量,因为它已经被删除了。