hoa / session
Hoa\Session 库。
Requires
- ext-session: *
- hoa/consistency: ~1.0
- hoa/event: ~1.0
- hoa/exception: ~1.0
- hoa/iterator: ~2.0
This package is auto-updated.
Last update: 2021-09-20 08:31:56 UTC
README
Hoa 是一组 模块化、可扩展 和 结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和研究界之间的桥梁。
Hoa\Session
此库允许通过创建“命名空间”来轻松操作会话,即在全局变量 $_SESSION
中创建一个条目。它还允许操作闪存会话。
每个命名空间都有一个配置文件。这包括我们可以单独控制每个命名空间的生命周期。此库可以与 ext/session
一起使用(特别是用于配置会话)。
安装
使用 Composer,要将此库包含到依赖项中,您需要要求 hoa/session
$ composer require hoa/session '~0.0'
有关更多信息,请参阅 源代码页面。
测试
在运行测试套件之前,必须安装开发依赖项
$ composer install
然后,要运行所有测试套件
$ vendor/bin/hoa test:run
有关更多信息,请参阅 贡献者指南。
快速使用
我们提出了三种使用方法的快速概述:操作命名空间、处理过期和销毁命名空间。
操作命名空间
我们将开始一个 user
命名空间。如果此命名空间为空,则意味着两件事:会话是新建的或已过期。在所有情况下,我们打印 first time
并将当前时间保存到 foo
中。如果命名空间不为空,则打印 other times
并转储保存的时间。因此
$user = new Hoa\Session\Session('user'); if ($user->isEmpty()) { echo 'first time', "\n"; $user['foo'] = time(); } else { echo 'other times', "\n"; var_dump($user['foo']); }
第一次执行将打印 first time
,之后的执行将打印 other times
后跟一个时间戳。
无需启动会话,它将自动完成。但如果我们想这样做,我们可以使用 session_start
函数或 Hoa\Session\Session::start
静态方法,后者更为复杂。
处理过期
如果一个命名空间在会话之前过期,则将在通道 hoa://Event/Session/<namespace>:expired
上触发一个事件,或者抛出一个 Hoa\Session\Exception\Expired
异常(如果没有可调用的监听器)。我们可以通过使用 Hoa\Session\Session::isExpired
方法来测试命名空间是否已过期,或者我们可以通过使用 Hoa\Session\Session::hasExpired
方法来将命名空间声明为已过期(此方法将抛出异常或触发事件)。
考虑前面的示例,当会话为空时,我们将声明命名空间为已过期
Hoa\Event\Event::getEvent('hoa://Event/Session/user:expired') ->attach(function (Hoa\Event\Bucket $bucket) { echo 'expired', "\n"; }); $user = new Hoa\Session\Session('user'); if ($user->isEmpty()) { $user->hasExpired(); echo 'first time', "\n"; $user['foo'] = time(); } else { echo 'other times', "\n"; var_dump($user['foo']); }
第一次执行将打印 已过期
和 第一次
,之后的执行将打印 其他次数
后跟时间戳。
如果空会话不表示过期(取决于我们的工作流程和配置),我们可以避免调用 $user->hasExpired()
:测试会在命名空间构建期间自动完成。
我们可以使用 Hoa\Session\Session::rememberMe
方法来修改有效期;例如
$user->rememberMe('+1 day');
我们还可以忘记命名空间
$user->forgetMe();
销毁命名空间
销毁命名空间使用 Hoa\Session\Session::delete
方法
$user = new Hoa\Session\Session('user'); $user['foo'] = 'bar'; $user->delete();
因为显式删除了命名空间,所以命名空间中的数据 将丢失。
如果我们想销毁会话(包括所有命名空间和cookie),可以使用 Hoa\Session\Session::destroy
静态方法。再次强调,如果会话尚未手动启动,则无需先启动会话。
文档
Hoa\Session 的黑客手册 包含有关如何使用此库及其工作原理的详细信息。
要本地生成文档,请执行以下命令
$ composer require --dev hoa/devtools $ vendor/bin/hoa devtools:documentation --open
更多文档可以在项目网站上找到: hoa-project.net。
获取帮助
主要有两种方式获取帮助
- 在
#hoaproject
IRC 频道中, - 在 users.hoa-project.net 的论坛上。
贡献
你想贡献吗?谢谢!详细的 贡献指南 解释了你需要知道的一切。
许可证
Hoa 采用新 BSD 许可证 (BSD-3-Clause)。请参阅 LICENSE
获取详细信息。