bundles/mldev-order-bundle/src/Service/Cart/SessionStorage.php line 32

Open in your IDE?
  1. <?php
  2. namespace MLDev\OrderBundle\Service\Cart;
  3. use Symfony\Component\HttpFoundation\RequestStack;
  4. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  5. final class SessionStorage implements StorageInterface
  6. {
  7.     /**
  8.      * Session key
  9.      */
  10.     const SESSION_KEY 'mldev-cart-storage';
  11.     /**
  12.      * @var SessionInterface
  13.      */
  14.     private $session;
  15.     /**
  16.      * @param RequestStack $requestStack
  17.      */
  18.     public function __construct(RequestStack $requestStack)
  19.     {
  20.         if ($requestStack->getCurrentRequest()->hasSession()) {
  21.             $this->session $requestStack->getSession();
  22.         }
  23.     }
  24.     public function read(): array
  25.     {
  26.         return $this->session->get(self::SESSION_KEY, []);
  27.     }
  28.     public function write(array $data): void
  29.     {
  30.         $this->session->set(self::SESSION_KEY$data);
  31.     }
  32.     public function set(int $idint $count): array
  33.     {
  34.         $storage $this->read();
  35.         $storage[$id] = $count;
  36.         if (!$storage[$id]) {
  37.             unset($storage[$id]);
  38.         }
  39.         $this->write($storage);
  40.         return $storage;
  41.     }
  42.     public function remove(int $id): array
  43.     {
  44.         $storage $this->read();
  45.         if ($storage[$id] ?? null) {
  46.             unset($storage[$id]);
  47.         }
  48.         $this->write($storage);
  49.         return $storage;
  50.     }
  51.     public function clear(): void
  52.     {
  53.         $this->write([]);
  54.     }
  55. }