codeinc/session-manager

此包已被废弃且不再维护。作者建议使用 ellipse/session 包代替。

用 PHP 7 编写的简单会话管理库

2.1.6 2018-03-14 15:58 UTC

README

此库是一个用 PHP 7 编写的简单会话管理服务。库与 PSR-15 和 PSR-7 兼容。它提供了一个 PSR-15 中间件,将会话管理器附加到 PSR-7 请求对象作为属性。

保存和写入会话通过实现 HandlerInterface 的会话处理程序进行。

使用方法

<?php
use CodeInc\SessionManager\SessionManager;

// the session manager need a session handler to start
$sessionManager = new SessionManager(
	new MySessionHandler() //  any handler implementing HandlerInterface
);
$sessionManager->setName("AGreatSession");
$sessionManager->setExpire(30); // minutes
$sessionManager->setValidateClientIp(true);
$session = $sessionManager->start($psr7ServerRequest); // the PSR-7 server request

// SessionManager implement ArrayAccess 
$session["test"] = "Hello wold!";
echo $session["test"];

// SessionManager is also iterable
foreach ($session as $var => $value) {
	echo "$var = $value\n";
}

中间件

提供了一个 PSR-15 中间件 middleware SessionMiddleware,用于将会话管理器附加到请求对象,并通过将其附加到 PSR-7 响应来发送会话 cookie。cookie 仅附加到 text/html 响应。

<?php
use CodeInc\SessionManager\SessionManager;
use CodeInc\SessionManager\SessionMiddleware;

// the middleware needs the session manager
$sessionManager = new SessionManager(new MySessionHandler());

// instantiating the middleware and processing the PSR-7 request, producing a PSR-7 response
// the middleware will take car of starting the session and will attache the session
// data to the PSR-7 request attributes.
$middleware = new SessionMiddleware($sessionManager);
$psr7Response = $middleware->process(
	$psr7ServerRequest, 
	$somePsr15RequestHandler
);

在控制器或另一个中间件中,您可以使用以下方式从 PSR-7 请求属性中访问会话数据:

<?php
use CodeInc\SessionManager\SessionMiddleware;

$session = SessionMiddleware::getSession($psr7ServerRequest);
$session["user_name"] = "John Smith";
echo $session["user_name"];

安装

此库可通过 Packagist 获取,并可以使用 Composer 进行安装。

composer require codeinc/session-manager

许可证

此库在 MIT 许可证下发布(请参阅 LICENSE 文件)。