[HttpFoundation] change precedence of parameters in Request::get
This commit is contained in:
parent
7e3c4a6afd
commit
e8d6764e32
@ -1,6 +1,11 @@
|
|||||||
CHANGELOG
|
CHANGELOG
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
3.0.0
|
||||||
|
-----
|
||||||
|
|
||||||
|
* The precedence of parameters returned from `Request::get()` changed from "GET, PATH, BODY" to "PATH, GET, BODY"
|
||||||
|
|
||||||
2.8.0
|
2.8.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
@ -700,19 +700,13 @@ class Request
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a "parameter" value.
|
* Gets a "parameter" value from any bag.
|
||||||
*
|
*
|
||||||
* This method is mainly useful for libraries that want to provide some flexibility.
|
* This method is mainly useful for libraries that want to provide some flexibility. If you don't need the
|
||||||
|
* flexibility in controllers, it is better to explicitly get request parameters from the appropriate
|
||||||
|
* public property instead (attributes, query, request).
|
||||||
*
|
*
|
||||||
* Order of precedence: GET, PATH, POST
|
* Order of precedence: PATH (routing placeholders or custom attributes), GET, BODY
|
||||||
*
|
|
||||||
* Avoid using this method in controllers:
|
|
||||||
*
|
|
||||||
* * slow
|
|
||||||
* * prefer to get from a "named" source
|
|
||||||
*
|
|
||||||
* It is better to explicitly get request parameters from the appropriate
|
|
||||||
* public property instead (query, attributes, request).
|
|
||||||
*
|
*
|
||||||
* @param string $key the key
|
* @param string $key the key
|
||||||
* @param mixed $default the default value
|
* @param mixed $default the default value
|
||||||
@ -721,11 +715,11 @@ class Request
|
|||||||
*/
|
*/
|
||||||
public function get($key, $default = null)
|
public function get($key, $default = null)
|
||||||
{
|
{
|
||||||
if ($this !== $result = $this->query->get($key, $this)) {
|
if ($this !== $result = $this->attributes->get($key, $this)) {
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this !== $result = $this->attributes->get($key, $this)) {
|
if ($this !== $result = $this->query->get($key, $this)) {
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1221,6 +1221,25 @@ class RequestTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals('/path%20test/info', $request->getPathInfo());
|
$this->assertEquals('/path%20test/info', $request->getPathInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetParameterPrecedence()
|
||||||
|
{
|
||||||
|
$request = new Request();
|
||||||
|
$request->attributes->set('foo', 'attr');
|
||||||
|
$request->query->set('foo', 'query');
|
||||||
|
$request->request->set('foo', 'body');
|
||||||
|
|
||||||
|
$this->assertSame('attr', $request->get('foo'));
|
||||||
|
|
||||||
|
$request->attributes->remove('foo');
|
||||||
|
$this->assertSame('query', $request->get('foo'));
|
||||||
|
|
||||||
|
$request->query->remove('foo');
|
||||||
|
$this->assertSame('body', $request->get('foo'));
|
||||||
|
|
||||||
|
$request->request->remove('foo');
|
||||||
|
$this->assertNull($request->get('foo'));
|
||||||
|
}
|
||||||
|
|
||||||
public function testGetPreferredLanguage()
|
public function testGetPreferredLanguage()
|
||||||
{
|
{
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
|
Reference in New Issue
Block a user