我学习了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));
}
它返回闭包。
我认为在这一步没有初始化请求。
我的任务是为授权提供服务,该服务应该将经过身份验证的用户保存到会话中。
请告诉我,如何正确获取请求和会话实例?
也许,我不明白zend expressive是如何工作的吗?