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

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 5f5d741

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

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

src/Symfony/Component/HttpFoundation/Request.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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