SessionInterface
Symfony все еще немного расплывчатый / волшебный c для меня. Поэтому, если кто-то может просветить меня, пожалуйста.
Естественно, запрос содержит объект сеанса и может использоваться в контроллере.
class SimpleController extends AbstractController
{
public function index(Request $request): Response
{
$request->getSession()->set('session-var', 10);
}
}
Однако в службу можно также включить SessionInterface как сервис и работает, предположительно, с тем же ParameterBag.
class SimpleService
{
public function __construct(SessionInterface $session)
{
$session->set('session-var', 10);
}
}
Мой коллега отметил, что сеанс является (и всегда должен быть) частью запроса. Это имеет смысл для меня, но также заставило меня задуматься: почему вы можете использовать SessionInterface как сервис, когда это объект / свойство запроса.
Чего я хочу достичь в конец состоит в том, чтобы включить службу в моем контроллере, и в этой службе работать с текущим сеансом.
Пример кода моего варианта использования будет выглядеть примерно так:
class SimpleController extends AbstractController
{
private $simpleService;
public function __construct(SimpleService $simpleService)
{
$this->simpleService = $simpleService;
}
public function index(Request $request): Response
{
$this->simpleService->doSomething();
}
}
class SimpleService
{
private $session;
public function __construct(SessionInterface $session)
{
$this->session = $session;
}
public function doSomething()
{
// Do some things..... and save the result in the session.
$this->session->set('just_a_preference', 50);
}
}
Итак:
- Является ли это / правильный способ работы с сеансами в Symfony?
- Сохраняется ли 'just_a_preference' в той же сумке параметров сеанса, что и мой $ request -> getSession ()?
- Если нет, как правильно работать с текущим сеансом запросов вне контроллера?
Если работать с Symfony 4.4.