stefna/session

psr7/psr15 的会话管理

1.0.0 2023-10-25 12:04 UTC

This package is auto-updated.

Last update: 2024-08-25 13:54:47 UTC


README

Build Status Latest Version on Packagist Software License

该包有助于在 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)。有关更多信息,请参阅 许可文件