vendor/symfony/twig-bridge/AppVariable.php line 151
<?php/** This file is part of the Symfony package.** (c) Fabien Potencier <fabien@symfony.com>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace Symfony\Bridge\Twig;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\RequestStack;use Symfony\Component\HttpFoundation\Session\Session;use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;use Symfony\Component\Security\Core\User\UserInterface;/*** Exposes some Symfony parameters and services as an "app" global variable.** @author Fabien Potencier <fabien@symfony.com>*/class AppVariable{private TokenStorageInterface $tokenStorage;private RequestStack $requestStack;private string $environment;private bool $debug;public function setTokenStorage(TokenStorageInterface $tokenStorage){$this->tokenStorage = $tokenStorage;}public function setRequestStack(RequestStack $requestStack){$this->requestStack = $requestStack;}public function setEnvironment(string $environment){$this->environment = $environment;}public function setDebug(bool $debug){$this->debug = $debug;}/*** Returns the current token.** @throws \RuntimeException When the TokenStorage is not available*/public function getToken(): ?TokenInterface{if (!isset($this->tokenStorage)) {throw new \RuntimeException('The "app.token" variable is not available.');}return $this->tokenStorage->getToken();}/*** Returns the current user.** @see TokenInterface::getUser()*/public function getUser(): ?UserInterface{if (!isset($this->tokenStorage)) {throw new \RuntimeException('The "app.user" variable is not available.');}return $this->tokenStorage->getToken()?->getUser();}/*** Returns the current request.*/public function getRequest(): ?Request{if (!isset($this->requestStack)) {throw new \RuntimeException('The "app.request" variable is not available.');}return $this->requestStack->getCurrentRequest();}/*** Returns the current session.*/public function getSession(): ?Session{if (!isset($this->requestStack)) {throw new \RuntimeException('The "app.session" variable is not available.');}$request = $this->getRequest();return $request?->hasSession() ? $request->getSession() : null;}/*** Returns the current app environment.*/public function getEnvironment(): string{if (!isset($this->environment)) {throw new \RuntimeException('The "app.environment" variable is not available.');}return $this->environment;}/*** Returns the current app debug mode.*/public function getDebug(): bool{if (!isset($this->debug)) {throw new \RuntimeException('The "app.debug" variable is not available.');}return $this->debug;}/*** Returns some or all the existing flash messages:* * getFlashes() returns all the flash messages* * getFlashes('notice') returns a simple array with flash messages of that type* * getFlashes(['notice', 'error']) returns a nested array of type => messages.*/public function getFlashes(string|array $types = null): array{try {if (null === $session = $this->getSession()) {return [];}} catch (\RuntimeException) {return [];}if (null === $types || '' === $types || [] === $types) {return $session->getFlashBag()->all();}if (\is_string($types)) {return $session->getFlashBag()->get($types);}$result = [];foreach ($types as $type) {$result[$type] = $session->getFlashBag()->get($type);}return $result;}public function getCurrent_route(): ?string{if (!isset($this->requestStack)) {throw new \RuntimeException('The "app.current_route" variable is not available.');}return $this->getRequest()?->attributes->get('_route');}/*** @return array<string, mixed>*/public function getCurrent_route_parameters(): array{if (!isset($this->requestStack)) {throw new \RuntimeException('The "app.current_route_parameters" variable is not available.');}return $this->getRequest()?->attributes->get('_route_params') ?? [];}}