vendor/pimcore/pimcore/lib/Tool/Session.php line 43

  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * Pimcore
  5.  *
  6.  * This source file is available under two different licenses:
  7.  * - GNU General Public License version 3 (GPLv3)
  8.  * - Pimcore Commercial License (PCL)
  9.  * Full copyright and license information is available in
  10.  * LICENSE.md which is distributed with this source code.
  11.  *
  12.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  13.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  14.  */
  15. namespace Pimcore\Tool;
  16. use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface;
  17. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  18. final class Session
  19. {
  20.     /**
  21.      * @param callable(AttributeBagInterface, SessionInterface):mixed $func
  22.      */
  23.     public static function useBag(SessionInterface $session, callable $funcstring $namespace 'pimcore_admin'): mixed
  24.     {
  25.         $bag $session->getBag($namespace);
  26.         if ($bag instanceof AttributeBagInterface) {
  27.             return $func($bag$session);
  28.         }
  29.         throw new \InvalidArgumentException(sprintf('The Bag "%s" is not a AttributeBagInterface.'$namespace));
  30.     }
  31.     public static function getSessionBag(
  32.         SessionInterface $session,
  33.         string $namespace 'pimcore_admin'
  34.     ): ?AttributeBagInterface {
  35.         $bag $session->getBag($namespace);
  36.         if ($bag instanceof AttributeBagInterface) {
  37.             return $bag;
  38.         }
  39.         return null;
  40.     }
  41. }