<?php declare(strict_types=1);
namespace ShopStudio\PixelYourShop\View\TransientBag;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* @since 1.0.0
*/
class TransientBag implements TransientBagInterface
{
/**
* @since 1.0.0
*/
protected const PREFIX = 'shopstudio_pixelyourshop_transient';
/**
* @since 1.0.0
*/
private RequestStack $requestStack;
/**
* @since 1.0.0
*/
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
/**
* @since 1.0.0
*
* @inheritDoc
*/
public function set(Transient $transient): void
{
$this->requestStack->getSession()->set(
sprintf('%s_%s', self::PREFIX, $transient->getKey()),
$transient->getData()
);
}
/**
* @since 1.0.0
*
* @inheritDoc
*/
public function get(string $key): ?Transient
{
if (!$this->requestStack->getSession()->has(sprintf('%s_%s', self::PREFIX, $key))) {
return null;
}
$data = $this->requestStack->getSession()->remove(sprintf('%s_%s', self::PREFIX, $key));
return new Transient($key, !empty($data) ? $data : null);
}
}