stefna / session
psr7/psr15 的会话管理
1.0.0
2023-10-25 12:04 UTC
Requires
- php: ^8.2
- psr/http-server-middleware: ^1.0.1
- psr/log: ^3.0
- stefna/ds-collection: ^1.0
Requires (Dev)
- bnf/phpstan-psr-container: ^1.0
- phpstan/extension-installer: ^1.2
- phpstan/phpstan: ^1.8
- phpstan/phpstan-phpunit: ^1.1
- phpunit/phpunit: ^10.4
- squizlabs/php_codesniffer: dev-master
- stefna/codestyle: ^1.12
- tomasvotruba/type-coverage: ^0.0.7
README
该包有助于在 PSR-7/PSR-15 环境中处理会话。
它还提供了一个闪存消息服务,有助于使用一次性消息。
要求
PHP 8.2 或更高版本。
安装
composer require stefna/session
会话
为了在请求之间保持会话,您需要将 SessionMiddleware
添加到中间件集合中。
然后您将能够访问请求对象中的会话存储并进行检索
<?php $session = $request->getAttribute(\Stefna\Session\SessionStorage::class);
闪存消息
您需要将 FlashMiddleware
添加到您的中间件运行器中,并且它需要在 SessionMiddleware
之后添加。
然后您将能够访问请求对象中的闪存消息并进行重试
<?php $messageCollection = $request->getAttribute(\Stefna\Session\Flash\FlashMessages::class);
概念
包的主要概念是将会话的使用与会话的持久化分离。
这是通过懒加载一切来实现的。会话将在有人需要会话中的某些内容时才启动。
会话的使用
<?php use Psr\Http\Message\ServerRequestInterface; class Action { public function __invoke(ServerRequestInterface $request) { $session = $request->getAttribute(\Stefna\Session\SessionStorage::class); if ($session->getBool('loggedIn')) { $session->set('loggedIn', false); } elseif ($session->has('blocked')) { $session->remove('blocked'); } } }
闪存消息的使用
添加闪存消息
<?php use Psr\Http\Message\ServerRequestInterface; use Stefna\Session\Flash\FlashMessage; use Stefna\Session\Flash\FlashMessages; use Stefna\Session\Flash\MessageType; class Action { public function __invoke(ServerRequestInterface $request) { $flashMessages = $request->getAttribute(FlashMessages::class); $flashMessages->add(new FlashMessage('Stuff happened', type: MessageType::Live)); } }
获取闪存消息
获取闪存消息意味着它们将从存储中删除。
<?php use Psr\Http\Message\ServerRequestInterface; use Stefna\Session\Flash\FlashMessages; use Stefna\Session\Flash\MessageType; class Action { public function __invoke(ServerRequestInterface $request) { $flashMessages = $request->getAttribute(FlashMessages::class); $messages = $flashMessages->getMessages(MessageType::Live); $this->renderGrowMessages($messages); } }
贡献
我们总是乐意接收错误/安全报告和错误/安全修复。
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。