Я изучаю Zend Expressive и у меня есть несколько вопросов о фабриках.
Итак, я могу получить сеанс в промежуточном программном обеспечении:
...
/** @var Zend\Expressive\Session\LazySession $session */
$session = $request->getAttribute(SessionMiddleware::SESSION_ATTRIBUTE);
...
Однако, если я хочу создать пользовательский сервисс зависимостью сеанса мне нужно получить экземпляр сеанса в фабрику.
class AuthServiceFactory
{
public function __invoke(ContainerInterface $container): HttpAuthService
{
// get instance $userRepository
// get instance $session
return new HttpAuthService(
$userRepository,
$session
);
}
}
Когда я пытаюсь получить экземпляр запроса из контейнера:
public function __invoke(ContainerInterface $container): HttpAuthService
{
dd($container->get(\Psr\Http\Message\ServerRequestInterface::class));
}
, он возвращает Closure.
![enter image description here](https://i.stack.imgur.com/KIri1.png)
Я думаю, что запрос не инициализируется на этом шаге.
Моя задача - создать сервис для авторизации, который должен сохранять аутентифицированного пользователя в сеансе.
Подскажите, пожалуйста, как мне правильно получить запрос и экземпляры сеанса?
Может быть, я не понимаю, как работает Zend Expressive?