phossa2 / session
PHP 的会话库。
Requires
- php: >=5.4.0
- phossa2/shared: 2.*
Requires (Dev)
- phossa2/storage: dev-master
- phossa2/uuid: dev-master
- phpunit/phpunit: 4.*
- squizlabs/php_codesniffer: 2.*
Suggests
- phossa2/storage: If use phossa2/storage handler
- phossa2/uuid: If use uuid as session id
This package is not auto-updated.
Last update: 2024-09-14 18:42:20 UTC
README
phossa2/session 是一个用于 PHP 的会话库。
它需要 PHP 5.4,支持 PHP 7.0+ 和 HHVM。它遵循 PSR-1、PSR-2、PSR-3、PSR-4,以及提议的 PSR-5。
亮点
-
能够与其他会话库或工具共存,包括 PHP 会话。
-
能够同时运行多个会话。
-
使用 cartons 进行数据分离。
-
支持 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');
关闭或销毁一个会话不会影响其他会话。
-
在 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'));
-
驱动程序实现了
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 由内置例程生成。用户可以使用自己的生成器,例如使用
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