[SecurityBundle] Cache contexts per request in FirewallMap

This commit is contained in:
Robin Chalas 2016-10-10 20:24:10 +02:00
parent a5d134b136
commit ffacec12c3
No known key found for this signature in database
GPG Key ID: 89672113756EE03B

View File

@ -26,18 +26,24 @@ class FirewallMap implements FirewallMapInterface
{
protected $container;
protected $map;
private $contexts;
public function __construct(ContainerInterface $container, array $map)
{
$this->container = $container;
$this->map = $map;
$this->contexts = new \SplObjectStorage();
}
public function getListeners(Request $request)
{
if ($this->contexts->contains($request)) {
return $this->contexts[$request];
}
foreach ($this->map as $contextId => $requestMatcher) {
if (null === $requestMatcher || $requestMatcher->matches($request)) {
return $this->container->get($contextId)->getContext();
return $this->contexts[$request] = $this->container->get($contextId)->getContext();
}
}