phossa2/session

PHP 的会话库。

2.0.0 2016-10-11 05:16 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:42:20 UTC


README

Build Status Code Quality Code Climate PHP 7 ready HHVM Latest Stable Version License

phossa2/session 是一个用于 PHP 的会话库。

它需要 PHP 5.4,支持 PHP 7.0+ 和 HHVM。它遵循 PSR-1PSR-2PSR-3PSR-4,以及提议的 PSR-5

亮点

  • 能够与其他会话库或工具共存,包括 PHP 会话。

  • 能够同时运行多个会话。

  • 使用 cartons 进行数据分离。

  • 支持 Handlerdrivervalidator 以及依赖注入。

  • 支持 Middleware

安装

通过 composer 工具安装。

composer require "phossa2/session"

或者将以下行添加到您的 composer.json 文件中

{
    "require": {
       "phossa2/session": "2.*"
    }
}

用法

启动会话,通常在引导文件中。

use Phossa2\Session\Session;
use Phossa2\Session\Carton;

// start a 'global' session
$sessGlobal = new Session('global');

// set 'global' session as the default
Carton::setDefaultSession($sessGlobal);

// start another 'private' session at the same time
$sessPrivate = new Session('private');

然后在您的代码中使用会话数据

// a box using default session 'global'
$boxGlobal = new Carton();

// global counter
++$boxGlobal['counter'];

// another box named 'toy' using the private session
$boxPrivate = new Carton('toy', $sessPrivate);

// private counter
++$boxPrivate['counter'];

特性

  • 支持多个会话

    Phossa2\Session\Session 使用自己的基础设施。它可以与其他会话库或 PHP 会话共存。默认情况下,它使用 cookie 作为会话 ID 交换协议。不同的会话使用不同的 cookie。

    // use a cookie named 'one'
    $sessOne = new Session('one');
    
    // use a cookie named 'two'
    $sessTwo = new Session('two');

    关闭或销毁一个会话不会影响其他会话。

  • 使用 Carton 进行数据分离

    在 PHP 会话中,会话数据存储在全局变量 $_SESSION 中。它只提供存储,没有其他工具。

    Phossa2\Session\Carton 是数据的沙盒。用户可以使用命名而不是使用默认名称 'default'。或者甚至附加到不同的会话而不是使用默认会话。

    // box 1
    $boxOne = new Carton('one', $sessPrivate);
    $boxOne['drone'] = 2;
    
    // box 2
    $boxTwo = new Carton('two', $sessPrivate);
    $boxTwo['drone'] = 1;

    如果 $name$session 中的任何一个不同,则数据位于不同的命名空间中。

    通过扩展 Phossa2\Session\Carton,用户甚至可以提供工具,例如数据锁定、使用监控、访问控制等。

  • 扩展库

    phossa2/session 将其大多数依赖项重构为单独的类。

    • 会话保存处理程序

      处理程序实现了在 PHP 中广泛采用的 \SessionHandlerInterface。如果没有处理程序注入到会话中,它将默认使用 Phossa2\Session\Handler\FileHandler

      use Phossa2\Session\Handler\StorageHandler;
      
      // inject a phossa2/storage handler
      $session->setHandler(new StorageHandler($storage, '/tmp/session'));
    • 会话 ID 交换协议

      驱动程序实现了 Phossa2\Session\Interfaces\DriverInterface。默认情况下,使用 Phossa2\Session\Driver\CookieDriver 通过 cookie 在客户端 set/get/del 会话 ID。

      用户可以编写自己的驱动程序与客户端通信。

      use My\Own\HeaderDriver;
      
      // stores session id in `X-My-Own-Session` header
      $session->setDriver(new HeaderDriver());
    • 会话验证

      可以将多个验证器注入会话以进行验证。

      use Phossa2\Session\Validator\RemoteIp;
      
      $session->addValidator(new RemoteIp());
    • 会话 ID 生成器

      默认情况下,会话 ID 由内置例程生成。用户可以使用自己的生成器,例如使用 phossa2/uuid

      use Phossa2\Session\Generator\UuidGenerator;
      
      $session->setGenerator(new UuidGenerator());
    • 中间件支持

      本库的中间件可在phossa2/middleware找到

变更日志

请查看CHANGELOG以获取更多信息。

测试

$ composer test

贡献

请参阅CONTRIBUTE以获取更多信息。

依赖

  • PHP >= 5.4.0

  • phossa2/shared >= 2.0.21

许可证

MIT许可证