2015-08-17 17:00:26 -07:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Component\Routing ;
use Symfony\Component\HttpFoundation\Request ;
/**
* Holds information about the current request .
*
* This class implements a fluent interface .
*
* @ author Fabien Potencier < fabien @ symfony . com >
* @ author Tobias Schultze < http :// tobion . de >
*/
class RequestContext
{
private $baseUrl ;
private $pathInfo ;
private $method ;
private $host ;
private $scheme ;
private $httpPort ;
private $httpsPort ;
private $queryString ;
private $parameters = array ();
/**
* @ param string $baseUrl The base URL
* @ param string $method The HTTP method
* @ param string $host The HTTP host name
* @ param string $scheme The HTTP scheme
* @ param int $httpPort The HTTP port
* @ param int $httpsPort The HTTPS port
* @ param string $path The path
* @ param string $queryString The query string
*/
public function __construct ( $baseUrl = '' , $method = 'GET' , $host = 'localhost' , $scheme = 'http' , $httpPort = 80 , $httpsPort = 443 , $path = '/' , $queryString = '' )
{
$this -> setBaseUrl ( $baseUrl );
$this -> setMethod ( $method );
$this -> setHost ( $host );
$this -> setScheme ( $scheme );
$this -> setHttpPort ( $httpPort );
$this -> setHttpsPort ( $httpsPort );
$this -> setPathInfo ( $path );
$this -> setQueryString ( $queryString );
}
/**
* Updates the RequestContext information based on a HttpFoundation Request .
*
2017-02-02 16:28:38 -08:00
* @ return $this
2015-08-17 17:00:26 -07:00
*/
public function fromRequest ( Request $request )
{
$this -> setBaseUrl ( $request -> getBaseUrl ());
$this -> setPathInfo ( $request -> getPathInfo ());
$this -> setMethod ( $request -> getMethod ());
$this -> setHost ( $request -> getHost ());
$this -> setScheme ( $request -> getScheme ());
$this -> setHttpPort ( $request -> isSecure () ? $this -> httpPort : $request -> getPort ());
$this -> setHttpsPort ( $request -> isSecure () ? $request -> getPort () : $this -> httpsPort );
$this -> setQueryString ( $request -> server -> get ( 'QUERY_STRING' , '' ));
return $this ;
}
/**
* Gets the base URL .
*
* @ return string The base URL
*/
public function getBaseUrl ()
{
return $this -> baseUrl ;
}
/**
* Sets the base URL .
*
* @ param string $baseUrl The base URL
*
2017-02-02 16:28:38 -08:00
* @ return $this
2015-08-17 17:00:26 -07:00
*/
public function setBaseUrl ( $baseUrl )
{
$this -> baseUrl = $baseUrl ;
return $this ;
}
/**
* Gets the path info .
*
* @ return string The path info
*/
public function getPathInfo ()
{
return $this -> pathInfo ;
}
/**
* Sets the path info .
*
* @ param string $pathInfo The path info
*
2017-02-02 16:28:38 -08:00
* @ return $this
2015-08-17 17:00:26 -07:00
*/
public function setPathInfo ( $pathInfo )
{
$this -> pathInfo = $pathInfo ;
return $this ;
}
/**
* Gets the HTTP method .
*
* The method is always an uppercased string .
*
* @ return string The HTTP method
*/
public function getMethod ()
{
return $this -> method ;
}
/**
* Sets the HTTP method .
*
* @ param string $method The HTTP method
*
2017-02-02 16:28:38 -08:00
* @ return $this
2015-08-17 17:00:26 -07:00
*/
public function setMethod ( $method )
{
$this -> method = strtoupper ( $method );
return $this ;
}
/**
* Gets the HTTP host .
*
* The host is always lowercased because it must be treated case - insensitive .
*
* @ return string The HTTP host
*/
public function getHost ()
{
return $this -> host ;
}
/**
* Sets the HTTP host .
*
* @ param string $host The HTTP host
*
2017-02-02 16:28:38 -08:00
* @ return $this
2015-08-17 17:00:26 -07:00
*/
public function setHost ( $host )
{
$this -> host = strtolower ( $host );
return $this ;
}
/**
* Gets the HTTP scheme .
*
* @ return string The HTTP scheme
*/
public function getScheme ()
{
return $this -> scheme ;
}
/**
* Sets the HTTP scheme .
*
* @ param string $scheme The HTTP scheme
*
2017-02-02 16:28:38 -08:00
* @ return $this
2015-08-17 17:00:26 -07:00
*/
public function setScheme ( $scheme )
{
$this -> scheme = strtolower ( $scheme );
return $this ;
}
/**
* Gets the HTTP port .
*
* @ return int The HTTP port
*/
public function getHttpPort ()
{
return $this -> httpPort ;
}
/**
* Sets the HTTP port .
*
* @ param int $httpPort The HTTP port
*
2017-02-02 16:28:38 -08:00
* @ return $this
2015-08-17 17:00:26 -07:00
*/
public function setHttpPort ( $httpPort )
{
$this -> httpPort = ( int ) $httpPort ;
return $this ;
}
/**
* Gets the HTTPS port .
*
* @ return int The HTTPS port
*/
public function getHttpsPort ()
{
return $this -> httpsPort ;
}
/**
* Sets the HTTPS port .
*
* @ param int $httpsPort The HTTPS port
*
2017-02-02 16:28:38 -08:00
* @ return $this
2015-08-17 17:00:26 -07:00
*/
public function setHttpsPort ( $httpsPort )
{
$this -> httpsPort = ( int ) $httpsPort ;
return $this ;
}
/**
* Gets the query string .
*
* @ return string The query string without the " ? "
*/
public function getQueryString ()
{
return $this -> queryString ;
}
/**
* Sets the query string .
*
* @ param string $queryString The query string ( after " ? " )
*
2017-02-02 16:28:38 -08:00
* @ return $this
2015-08-17 17:00:26 -07:00
*/
public function setQueryString ( $queryString )
{
// string cast to be fault-tolerant, accepting null
$this -> queryString = ( string ) $queryString ;
return $this ;
}
/**
* Returns the parameters .
*
* @ return array The parameters
*/
public function getParameters ()
{
return $this -> parameters ;
}
/**
* Sets the parameters .
*
* @ param array $parameters The parameters
*
2017-02-02 16:28:38 -08:00
* @ return $this
2015-08-17 17:00:26 -07:00
*/
public function setParameters ( array $parameters )
{
$this -> parameters = $parameters ;
return $this ;
}
/**
* Gets a parameter value .
*
* @ param string $name A parameter name
*
* @ return mixed The parameter value or null if nonexistent
*/
public function getParameter ( $name )
{
return isset ( $this -> parameters [ $name ]) ? $this -> parameters [ $name ] : null ;
}
/**
* Checks if a parameter value is set for the given parameter .
*
* @ param string $name A parameter name
*
* @ return bool True if the parameter value is set , false otherwise
*/
public function hasParameter ( $name )
{
return array_key_exists ( $name , $this -> parameters );
}
/**
* Sets a parameter value .
*
* @ param string $name A parameter name
* @ param mixed $parameter The parameter value
*
2017-02-02 16:28:38 -08:00
* @ return $this
2015-08-17 17:00:26 -07:00
*/
public function setParameter ( $name , $parameter )
{
$this -> parameters [ $name ] = $parameter ;
return $this ;
}
}