10000 [HttpFoundation] use InputBag for Request::$request only if data is c… · symfony/symfony@3f31a08 · GitHub
[go: up one dir, main page]

Skip to content

Commit 3f31a08

Browse files
[HttpFoundation] use InputBag for Request::$request only if data is coming from a form
1 parent 86c79ce commit 3f31a08

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

src/Symfony/Component/HttpFoundation/Request.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class Request
8585
/**
8686
* Request body parameters ($_POST).
8787
*
88-
* @var InputBag
88+
* @var InputBag|ParameterBag
8989
*/
9090
public $request;
9191

@@ -268,7 +268,7 @@ public function __construct(array $query = [], array $request = [], array $attri
268268
*/
269269
public function initialize(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null)
270270
{
271-
$this->request = new InputBag($request);
271+
$this->request = new ParameterBag($request);
272272
$this->query = new InputBag($query);
273273
$this->attributes = new ParameterBag($attributes);
274274
$this->cookies = new InputBag($cookies);
@@ -298,7 +298,9 @@ public static function createFromGlobals()
298298
{
299299
$request = self::createRequestFromFactory($_GET, $_POST, [], $_COOKIE, $_FILES, $_SERVER);
300300

301-
if (0 === strpos($request->headers->get('CONTENT_TYPE'), 'application/x-www-form-urlencoded')
301+
if ($_POST) {
302+
$request->request = new InputBag($_POST);
303+
} elseif (0 === strpos($request->headers->get('CONTENT_TYPE'), 'application/x-www-form-urlencoded')
302304
&& \in_array(strtoupper($request->server->get('REQUEST_METHOD', 'GET')), ['PUT', 'DELETE', 'PATCH'])
303305
) {
304306
parse_str($request->getContent(), $data);
@@ -447,7 +449,7 @@ public function duplicate(array $query = null, array $request = null, array $att
447449
$dup->query = new InputBag($query);
448450
}
449451
if (null !== $request) {
450-
$dup->request = new InputBag($request);
452+
$dup->request = new ParameterBag($request);
451453
}
452454
if (null !== $attributes) {
453455
$dup->attributes = new ParameterBag($attributes);

src/Symfony/Component/HttpFoundation/Tests/RequestTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException;
16+
use Symfony\Component\HttpFoundation\InputBag;
17+
use Symfony\Component\HttpFoundation\ParameterBag;
1618
use Symfony\Component\HttpFoundation\Request;
1719
use Symfony\Component\HttpFoundation\Session\Session;
1820
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
@@ -1255,6 +1257,11 @@ public function testCreateFromGlobals($method)
12551257
{
12561258
$normalizedMethod = strtoupper($method);
12571259

1260+
$_POST = [];
1261+
$request = Request::createFromGlobals();
1262+
$this->assertNotInstanceOf(InputBag::class, $request->request);
1263+
$this->assertInstanceOf(ParameterBag::class, $request->request);
1264+
12581265
$_GET['foo1'] = 'bar1';
12591266
$_POST['foo2'] = 'bar2';
12601267
$_COOKIE['foo3'] = 'bar3';
@@ -1267,6 +1274,8 @@ public function testCreateFromGlobals($method)
12671274
$this->assertEquals('bar3', $request->cookies->get('foo3'), '::fromGlobals() uses values from $_COOKIE');
12681275
$this->assertEquals(['bar4'], $request->files->get('foo4'), '::fromGlobals() uses values from $_FILES');
12691276
$this->assertEquals('bar5', $request->server->get('foo5'), '::fromGlobals() uses values from $_SERVER');
1277+
$this->assertInstanceOf(InputBag::class, $request->request);
1278+
$this->assertInstanceOf(ParameterBag::class, $request->request);
12701279

12711280
unset($_GET['foo1'], $_POST['foo2'], $_COOKIE['foo3'], $_FILES['foo4'], $_SERVER['foo5']);
12721281

@@ -1275,6 +1284,8 @@ public function testCreateFromGlobals($method)
12751284
$request = RequestContentProxy::createFromGlobals();
12761285
$this->assertEquals($normalizedMethod, $request->getMethod());
12771286
$this->assertEquals('mycontent', $request->request->get('content'));
1287+
$this->assertInstanceOf(InputBag::class, $request->request);
1288+
$this->assertInstanceOf(ParameterBag::class, $request->request);
12781289

12791290
unset($_SERVER['REQUEST_METHOD'], $_SERVER['CONTENT_TYPE']);
12801291

0 commit comments

Comments
 (0)
0