/** * Builds siteaccess matcher. * If $matchingClass begins with "@", it will be considered as a service identifier and loaded with the service container. * * @param $matchingClass * @param $matchingConfiguration * @param \eZ\Publish\Core\MVC\Symfony\Routing\SimplifiedRequest $request * * @return \eZ\Bundle\EzPublishCoreBundle\SiteAccess\Matcher * * @throws \RuntimeException * */ public function buildMatcher($matchingClass, $matchingConfiguration, SimplifiedRequest $request) { if ($matchingClass[0] === '@') { /** @var $matcher \eZ\Bundle\EzPublishCoreBundle\SiteAccess\Matcher */ $matcher = $this->container->get(substr($matchingClass, 1)); if (!$matcher instanceof Matcher) { throw new RuntimeException('A service based siteaccess matcher MUST implement ' . __NAMESPACE__ . '\\Matcher interface.'); } $matcher->setMatchingConfiguration($matchingConfiguration); $matcher->setRequest($request); return $matcher; } return parent::buildMatcher($matchingClass, $matchingConfiguration, $request); }