hoa/session

此包已被废弃,不再维护。未建议替代包。

Hoa\Session 库。

0.17.01.16 2017-01-16 07:23 UTC

README

Hoa

Build status Code coverage Packagist License

Hoa 是一组 模块化可扩展结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和研究界之间的桥梁。

Hoa\Session

Help on IRC Help on Gitter Documentation Board

此库允许通过创建“命名空间”来轻松操作会话,即在全局变量 $_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

获取帮助

主要有两种方式获取帮助

贡献

你想贡献吗?谢谢!详细的 贡献指南 解释了你需要知道的一切。

许可证

Hoa 采用新 BSD 许可证 (BSD-3-Clause)。请参阅 LICENSE 获取详细信息。