eZ\Publish\Core\MVC\Symfony\SiteAccess\Router::match PHP Method

match() public method

Performs SiteAccess matching given the $request.
public match ( SimplifiedRequest $request ) : SiteAccess
$request eZ\Publish\Core\MVC\Symfony\Routing\SimplifiedRequest
return eZ\Publish\Core\MVC\Symfony\SiteAccess
    public function match(SimplifiedRequest $request)
    {
        $this->request = $request;
        if (isset($this->siteAccess)) {
            return $this->siteAccess;
        }
        $siteAccessClass = $this->siteAccessClass;
        $this->siteAccess = new $siteAccessClass();
        // Request header always have precedence
        // Note: request headers are always in lower cased.
        if (!empty($request->headers['x-siteaccess'])) {
            $siteaccessName = $request->headers['x-siteaccess'][0];
            if (!isset($this->siteAccessList[$siteaccessName])) {
                unset($this->siteAccess);
                throw new InvalidSiteAccessException($siteaccessName, array_keys($this->siteAccessList), 'X-Siteaccess request header');
            }
            $this->siteAccess->name = $siteaccessName;
            $this->siteAccess->matchingType = 'header';
            return $this->siteAccess;
        }
        // Then check environment variable
        $siteaccessEnvName = getenv('EZPUBLISH_SITEACCESS');
        if ($siteaccessEnvName !== false) {
            if (!isset($this->siteAccessList[$siteaccessEnvName])) {
                unset($this->siteAccess);
                throw new InvalidSiteAccessException($siteaccessEnvName, array_keys($this->siteAccessList), 'EZPUBLISH_SITEACCESS Environment variable');
            }
            $this->siteAccess->name = $siteaccessEnvName;
            $this->siteAccess->matchingType = 'env';
            return $this->siteAccess;
        }
        return $this->doMatch($request);
    }

Usage Example

 /**
  * @depends testConstruct
  * @dataProvider matchProvider
  */
 public function testMatch(SimplifiedRequest $request, $siteAccess, Router $router)
 {
     $sa = $router->match($request);
     $this->assertInstanceOf('eZ\\Publish\\Core\\MVC\\Symfony\\SiteAccess', $sa);
     $this->assertSame($siteAccess, $sa->name);
     $router->setSiteAccess();
 }
All Usage Examples Of eZ\Publish\Core\MVC\Symfony\SiteAccess\Router::match