[Routing] unify fluent interface in RequestContext
This commit is contained in:
parent
8203c66e3a
commit
41412f99f0
@ -16,6 +16,8 @@ use Symfony\Component\HttpFoundation\Request;
|
|||||||
/**
|
/**
|
||||||
* Holds information about the current request.
|
* Holds information about the current request.
|
||||||
*
|
*
|
||||||
|
* This class implements a fluent interface.
|
||||||
|
*
|
||||||
* @author Fabien Potencier <fabien@symfony.com>
|
* @author Fabien Potencier <fabien@symfony.com>
|
||||||
* @author Tobias Schultze <http://tobion.de>
|
* @author Tobias Schultze <http://tobion.de>
|
||||||
*
|
*
|
||||||
@ -67,6 +69,8 @@ class RequestContext
|
|||||||
* Updates the RequestContext information based on a HttpFoundation Request.
|
* Updates the RequestContext information based on a HttpFoundation Request.
|
||||||
*
|
*
|
||||||
* @param Request $request A Request instance
|
* @param Request $request A Request instance
|
||||||
|
*
|
||||||
|
* @return RequestContext The current instance, implementing a fluent interface
|
||||||
*/
|
*/
|
||||||
public function fromRequest(Request $request)
|
public function fromRequest(Request $request)
|
||||||
{
|
{
|
||||||
@ -78,6 +82,8 @@ class RequestContext
|
|||||||
$this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort());
|
$this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort());
|
||||||
$this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort);
|
$this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort);
|
||||||
$this->setQueryString($request->server->get('QUERY_STRING', ''));
|
$this->setQueryString($request->server->get('QUERY_STRING', ''));
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -95,11 +101,15 @@ class RequestContext
|
|||||||
*
|
*
|
||||||
* @param string $baseUrl The base URL
|
* @param string $baseUrl The base URL
|
||||||
*
|
*
|
||||||
|
* @return RequestContext The current instance, implementing a fluent interface
|
||||||
|
*
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
public function setBaseUrl($baseUrl)
|
public function setBaseUrl($baseUrl)
|
||||||
{
|
{
|
||||||
$this->baseUrl = $baseUrl;
|
$this->baseUrl = $baseUrl;
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -116,10 +126,14 @@ class RequestContext
|
|||||||
* Sets the path info.
|
* Sets the path info.
|
||||||
*
|
*
|
||||||
* @param string $pathInfo The path info
|
* @param string $pathInfo The path info
|
||||||
|
*
|
||||||
|
* @return RequestContext The current instance, implementing a fluent interface
|
||||||
*/
|
*/
|
||||||
public function setPathInfo($pathInfo)
|
public function setPathInfo($pathInfo)
|
||||||
{
|
{
|
||||||
$this->pathInfo = $pathInfo;
|
$this->pathInfo = $pathInfo;
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -139,11 +153,15 @@ class RequestContext
|
|||||||
*
|
*
|
||||||
* @param string $method The HTTP method
|
* @param string $method The HTTP method
|
||||||
*
|
*
|
||||||
|
* @return RequestContext The current instance, implementing a fluent interface
|
||||||
|
*
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
public function setMethod($method)
|
public function setMethod($method)
|
||||||
{
|
{
|
||||||
$this->method = strtoupper($method);
|
$this->method = strtoupper($method);
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -163,11 +181,15 @@ class RequestContext
|
|||||||
*
|
*
|
||||||
* @param string $host The HTTP host
|
* @param string $host The HTTP host
|
||||||
*
|
*
|
||||||
|
* @return RequestContext The current instance, implementing a fluent interface
|
||||||
|
*
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
public function setHost($host)
|
public function setHost($host)
|
||||||
{
|
{
|
||||||
$this->host = strtolower($host);
|
$this->host = strtolower($host);
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -185,11 +207,15 @@ class RequestContext
|
|||||||
*
|
*
|
||||||
* @param string $scheme The HTTP scheme
|
* @param string $scheme The HTTP scheme
|
||||||
*
|
*
|
||||||
|
* @return RequestContext The current instance, implementing a fluent interface
|
||||||
|
*
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
public function setScheme($scheme)
|
public function setScheme($scheme)
|
||||||
{
|
{
|
||||||
$this->scheme = strtolower($scheme);
|
$this->scheme = strtolower($scheme);
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -207,11 +233,15 @@ class RequestContext
|
|||||||
*
|
*
|
||||||
* @param int $httpPort The HTTP port
|
* @param int $httpPort The HTTP port
|
||||||
*
|
*
|
||||||
|
* @return RequestContext The current instance, implementing a fluent interface
|
||||||
|
*
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
public function setHttpPort($httpPort)
|
public function setHttpPort($httpPort)
|
||||||
{
|
{
|
||||||
$this->httpPort = (int) $httpPort;
|
$this->httpPort = (int) $httpPort;
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -229,11 +259,15 @@ class RequestContext
|
|||||||
*
|
*
|
||||||
* @param int $httpsPort The HTTPS port
|
* @param int $httpsPort The HTTPS port
|
||||||
*
|
*
|
||||||
|
* @return RequestContext The current instance, implementing a fluent interface
|
||||||
|
*
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
public function setHttpsPort($httpsPort)
|
public function setHttpsPort($httpsPort)
|
||||||
{
|
{
|
||||||
$this->httpsPort = (int) $httpsPort;
|
$this->httpsPort = (int) $httpsPort;
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -251,12 +285,16 @@ class RequestContext
|
|||||||
*
|
*
|
||||||
* @param string $queryString The query string (after "?")
|
* @param string $queryString The query string (after "?")
|
||||||
*
|
*
|
||||||
|
* @return RequestContext The current instance, implementing a fluent interface
|
||||||
|
*
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
public function setQueryString($queryString)
|
public function setQueryString($queryString)
|
||||||
{
|
{
|
||||||
// string cast to be fault-tolerant, accepting null
|
// string cast to be fault-tolerant, accepting null
|
||||||
$this->queryString = (string) $queryString;
|
$this->queryString = (string) $queryString;
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -313,10 +351,14 @@ class RequestContext
|
|||||||
* @param string $name A parameter name
|
* @param string $name A parameter name
|
||||||
* @param mixed $parameter The parameter value
|
* @param mixed $parameter The parameter value
|
||||||
*
|
*
|
||||||
|
* @return RequestContext The current instance, implementing a fluent interface
|
||||||
|
*
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
public function setParameter($name, $parameter)
|
public function setParameter($name, $parameter)
|
||||||
{
|
{
|
||||||
$this->parameters[$name] = $parameter;
|
$this->parameters[$name] = $parameter;
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -140,4 +140,20 @@ class RequestContextTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertSame(123, $requestContext->getHttpPort());
|
$this->assertSame(123, $requestContext->getHttpPort());
|
||||||
$this->assertSame(456, $requestContext->getHttpsPort());
|
$this->assertSame(456, $requestContext->getHttpsPort());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testFluentInterface()
|
||||||
|
{
|
||||||
|
$requestContext = new RequestContext();
|
||||||
|
|
||||||
|
$this->assertSame($requestContext, $requestContext->setBaseUrl('/app.php'));
|
||||||
|
$this->assertSame($requestContext, $requestContext->setPathInfo('/index'));
|
||||||
|
$this->assertSame($requestContext, $requestContext->setMethod('POST'));
|
||||||
|
$this->assertSame($requestContext, $requestContext->setScheme('https'));
|
||||||
|
$this->assertSame($requestContext, $requestContext->setHost('example.com'));
|
||||||
|
$this->assertSame($requestContext, $requestContext->setQueryString('foo=bar'));
|
||||||
|
$this->assertSame($requestContext, $requestContext->setHttpPort(80));
|
||||||
|
$this->assertSame($requestContext, $requestContext->setHttpsPort(443));
|
||||||
|
$this->assertSame($requestContext, $requestContext->setParameters(array()));
|
||||||
|
$this->assertSame($requestContext, $requestContext->setParameter('foo', 'bar'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user