Как получить доступ к сеансу Symfony без объявления каких-либо переменных?(Компоненты Symfony, взаимодействующие с вариантом использования устаревшего кода) - PullRequest
0 голосов
/ 11 октября 2018

Скажем, у меня есть одна строка, нигде не в классе, и я знаю, что у сеанса есть переменная с именем "foo", которую я хочу вывести.

В стандартном PHP я мог бы просто ...

echo $_SESSION["foo"];

Так что мне нужно сделать, чтобы эквивалентно использовать сеанс Symfony?Я не в функции, не в классе, не передаю переменные из точки А в точку Б, нет переменной $ request, нет $ session.Я просто хочу вывести "foo" из сессии.Как мне это сделать?

Это в унаследованной кодовой базе, которая имеет значительный кусок процедурно написанного кода.

1 Ответ

0 голосов
/ 11 октября 2018

Вариант 1: поскольку вы используете PHP, вы все равно можете использовать суперглобальный $_SESSION для доступа к переменным сеанса.

Вариант 2: в противном случае вы можете использовать класс Session Symfony,документация здесь: https://symfony.com/doc/current/components/http_foundation/sessions.html

Вариант 3: создать помощника, который абстрагирует сеанс Symfony.В вашем composer.json файле добавьте files определение в ваш autoload раздел:

{
   "autoload": {
        "files": ["src/helpers/SessionsHelper.php"]
   } 
}

PS не забудьте composer dump-autoload.

Теперь внутри SessionsHelper вы можете создавать функции, которые доступны по всему миру:

use Symfony\Component\HttpFoundation\Session\Session;

/**
 * Retrieve a value from Session
 * 
 * @param $key [String]
 * @return [String]
 */
function getSessionValue($key)
   $session = new Session();
   return $session->get($key);
}

Теперь вы можете использовать getSessionValue в любом месте кода:

echo getSessionValue('user_id');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...