Session/SessionInterface inconsistency
VincentLanglet opened this issue · 3 comments
Hi @ondrejmirtes,
After the merge of 012305d
(cf #233)
The return type of Request::getSession
is Session instead of SessionInterface.
This was not really true be could be considered as a good help for developers since
- it was almost always true
- there was no easy way to check for the
getFlashBag
method.
-
This is not the case after the merge of symfony/symfony@c7b5802 in Symfony 6.2.
Now, it's possible to do a$request->getSession() instanceof FlashBagAwareSessionInterface
check.
And, because of the stub, currently the stub is reported as always true which is not true... -
Currently,
RequestStack::getSession
is returningSessionInterface
whenRequest::getSession()
is returningSession
.
This should be fixed by reverting the stub for request, or adding a stub for RequestStack. -
The Request stub is loaded dynamically with the following extension https://github.com/phpstan/phpstan-symfony/blob/1.2.x/src/Symfony/InputBagStubFilesExtension.php#L19
which means that
- For user of SF <5.1,
$request::getSession
returns a SessionInterface. - For user of SF >=5.1,
$request::getSession
returns a Session.
Not sure this was expected
I'd like to improve the situation, what's your point of view about this ?
The easiest thing to do would be at least to introduce a stub for RequestStack, but there is maybe something better to do ?
I just spent a day figuring out how to work around some mess in DoctrineBundle. I'm not keen on spending more time on framework-specific problems anytime soon 😊
I just spent a day figuring out how to work around some mess in DoctrineBundle. I'm not keen on spending more time on framework-specific problems anytime soon 😊
I understand. I'm willing to do the PR I just wanted to know which choice you prefer.
If I can simplify:
Stubs today:
- Request::getSession return Session
- RequestStack::getSessionInterface returns SessionInterface
Reality:
- Request::getSession returns SessionInterface, which is Session in 99% of the time
- RequestStack::getSession returns SessionInterface, which is Session in 99% of the time
Solution 1:
- I add the same stub for RequestStack::getSession than for Request::getSession.
Solution 2:
- I remove the stub for Request::getSession.
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.