Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a3545e9

Browse files
[WebProfilerBundle] Fix deprecated uses of profiler_dump
1 parent 59f9949 commit a3545e9

File tree

6 files changed

+73
-25
lines changed

6 files changed

+73
-25
lines changed

src/Symfony/Bundle/WebProfilerBundle/Controller/RouterController.php

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
2121
use Symfony\Component\HttpKernel\Profiler\Profiler;
2222
use Symfony\Component\HttpKernel\DataCollector\RequestDataCollector;
23+
use Symfony\Component\VarDumper\Cloner\Data;
24+
use Symfony\Component\VarDumper\Cloner\Stub;
2325

2426
/**
2527
* RouterController.
@@ -84,13 +86,15 @@ public function panelAction($token)
8486
*/
8587
private function getTraces(RequestDataCollector $request, $method)
8688
{
89+
$requestServer = $this->filterScalarData($request->getRequestServer()->all());
90+
8791
$traceRequest = Request::create(
8892
$request->getPathInfo(),
89-
$request->getRequestServer()->get('REQUEST_METHOD'),
90-
$request->getRequestAttributes()->all(),
91-
$request->getRequestCookies()->all(),
93+
isset($requestServer['REQUEST_METHOD']) ? $requestServer['REQUEST_METHOD'] : null,
94+
$this->filterScalarData($request->getRequestAttributes()->all()),
95+
$this->filterScalarData($request->getRequestCookies()->all()),
9296
array(),
93-
$request->getRequestServer()->all()
97+
$requestServer
9498
);
9599

96100
$context = $this->matcher->getContext();
@@ -99,4 +103,27 @@ private function getTraces(RequestDataCollector $request, $method)
99103

100104
return $matcher->getTracesForRequest($traceRequest);
101105
}
106+
107+
/**
108+
* Replaces scalars wrapped as Data instances by their actual values and removes other values.
109+
*/
110+
private function filterScalarData(array $array)
111+
{
112+
foreach ($array as $key => $data) {
113+
if (!$data instanceof Data) {
114+
continue;
115+
}
116+
if (is_scalar($value = $data->getRawData()[0][0])) {
117+
$array[$key] = $value;
118+
} elseif (!$value instanceof Stub) {
119+
continue;
120+
} elseif (is_scalar($value->value)) {
121+
$array[$key] = $value->value;
122+
} else {
123+
unset($array[$key]);
124+
}
125+
}
126+
127+
return $array;
128+
}
102129
}

src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/request.html.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@
154154
{% endif %}
155155

156156
<h3>Request Headers</h3>
157-
{{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestheaders, labels: ['Header', 'Value'] }, with_context = false) }}
157+
{{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestheaders, labels: ['Header', 'Value'], as_headers: true }, with_context = false) }}
158158

159159
<h3>Request Content</h3>
160160

@@ -183,7 +183,7 @@
183183
<div class="tab-content">
184184
<h3>Response Headers</h3>
185185

186-
{{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.responseheaders, labels: ['Header', 'Value'] }, with_context = false) }}
186+
{{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.responseheaders, labels: ['Header', 'Value'], as_headers: true }, with_context = false) }}
187187
</div>
188188
</div>
189189

src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/bag.html.twig

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,17 @@
99
{% for key in bag.keys|sort %}
1010
<tr>
1111
<th>{{ key }}</th>
12-
<td>{{ profiler_dump(bag.get(key), maxDepth=maxDepth|default(0)) }}</td>
12+
<td>
13+
{% if as_headers|default(false) %}
14+
{% if 1 == bag.get(key).rawData[1]|length %}
15+
{{ profiler_dump(bag.get(key).seek(0), maxDepth=maxDepth|default(0)) }}
16+
{% else %}
17+
{{ profiler_dump(bag.get(key), maxDepth=maxDepth|default(0) + 1) }}
18+
{% endif %}
19+
{% else %}
20+
{{ profiler_dump(bag.get(key), maxDepth=maxDepth|default(0)) }}
21+
{% endif %}
22+
</td>
1323
</tr>
1424
{% else %}
1525
<tr>

src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ private function decorateVar($var)
130130
return new ClassStub($var);
131131
}
132132
}
133-
if (false !== strpos($var, DIRECTORY_SEPARATOR) && false === strpos($var, '://') && file_exists($var)) {
133+
if (false !== strpos($var, DIRECTORY_SEPARATOR) && false === strpos($var, '://') && false === strpos($var, "\0") && is_file($var)) {
134134
return new LinkStub($var);
135135
}
136136
}

src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@
1212
namespace Symfony\Component\HttpKernel\DataCollector;
1313

1414
use Symfony\Component\HttpFoundation\ParameterBag;
15-
use Symfony\Component\HttpFoundation\HeaderBag;
1615
use Symfony\Component\HttpFoundation\Request;
1716
use Symfony\Component\HttpFoundation\Response;
18-
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
1917
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
2018
use Symfony\Component\HttpKernel\KernelEvents;
2119
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
@@ -54,14 +52,10 @@ public function collect(Request $request, Response $response, \Exception $except
5452
$attributes = array();
5553
$route = '';
5654
foreach ($request->attributes->all() as $key => $value) {
57-
if ('_route' === $key && is_object($value)) {
58-
$attributes[$key] = $this->cloneVar($value->getPath());
59-
} else {
60-
$attributes[$key] = $this->cloneVar($value);
61-
}
62-
6355
if ('_route' === $key) {
64-
$route = is_object($value) ? $value->getPath() : $value;
56+
$attributes[$key] = $route = is_object($value) ? $value->getPath() : $value;
57+
} else {
58+
$attributes[$key] = $value;
6559
}
6660
}
6761

@@ -97,8 +91,8 @@ public function collect(Request $request, Response $response, \Exception $except
9791
'content_type' => $response->headers->get('Content-Type', 'text/html'),
9892
'status_text' => isset(Response::$statusTexts[$statusCode]) ? Response::$statusTexts[$statusCode] : '',
9993
'status_code' => $statusCode,
100-
'request_query' => array_map(array($this, 'cloneVar'), $request->query->all()),
101-
'request_request' => array_map(array($this, 'cloneVar'), $request->request->all()),
94+
'request_query' => $request->query->all(),
95+
'request_request' => $request->request->all(),
10296
'request_headers' => $request->headers->all(),
10397
'request_server' => $request->server->all(),
10498
'request_cookies' => $request->cookies->all(),
@@ -125,6 +119,13 @@ public function collect(Request $request, Response $response, \Exception $except
125119
$this->data['request_request']['_password'] = '******';
126120
}
127121

122+
$cloneVar = array($this, 'cloneVar');
123+
foreach ($this->data as $key => $value) {
124+
if (is_array($value)) {
125+
$this->data[$key] = array_map($cloneVar, $value);
126+
}
127+
}
128+
128129
if (isset($this->controllers[$request])) {
129130
$this->data['controller'] = $this->parseController($this->controllers[$request]);
130131
unset($this->controllers[$request]);
@@ -170,7 +171,7 @@ public function getRequestQuery()
170171

171172
public function getRequestHeaders()
172173
{
173-
return new HeaderBag($this->data['request_headers']);
174+
return new ParameterBag($this->data['request_headers']);
174175
}
175176

176177
public function getRequestServer()
@@ -190,7 +191,7 @@ public function getRequestAttributes()
190191

191192
public function getResponseHeaders()
192193
{
193-
return new ResponseHeaderBag($this->data['response_headers']);
194+
return new ParameterBag($this->data['response_headers']);
194195
}
195196

196197
public function getSessionMetadata()
@@ -264,7 +265,17 @@ public function getIdentifier()
264265
*/
265266
public function getRouteParams()
266267
{
267-
return isset($this->data['request_attributes']['_route_params']) ? $this->data['request_attributes']['_route_params'] : $this->cloneVar(array());
268+
if (!isset($this->data['request_attributes']['_route_params'])) {
269+
return array();
270+
}
271+
272+
$data = $this->data['request_attributes']['_route_params'];
273+
$params = array();
274+
foreach ($data->getRawData()[1] as $k => $v) {
275+
$params[$k] = $data->seek($k);
276+
}
277+
278+
return $params;
268279
}
269280

270281
/**

src/Symfony/Component/HttpKernel/Tests/DataCollector/RequestDataCollectorTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,21 @@ public function testCollect()
3939
$attributes = $c->getRequestAttributes();
4040

4141
$this->assertSame('request', $c->getName());
42-
$this->assertInstanceOf('Symfony\Component\HttpFoundation\HeaderBag', $c->getRequestHeaders());
42+
$this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestHeaders());
4343
$this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestServer());
4444
$this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestCookies());
4545
$this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $attributes);
4646
$this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestRequest());
4747
$this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestQuery());
4848
$this->assertSame('html', $c->getFormat());
4949
$this->assertEquals('foobar', $c->getRoute());
50-
$this->assertEquals($cloner->cloneVar(array('name' => 'foo')), $c->getRouteParams());
50+
$this->assertEquals(array('name' => $cloner->cloneVar(array('name' => 'foo'))->seek('name')), $c->getRouteParams());
5151
$this->assertSame(array(), $c->getSessionAttributes());
5252
$this->assertSame('en', $c->getLocale());
5353
$this->assertEquals($cloner->cloneVar($request->attributes->get('resource')), $attributes->get('resource'));
5454
$this->assertEquals($cloner->cloneVar($request->attributes->get('object')), $attributes->get('object'));
5555

56-
$this->assertInstanceOf('Symfony\Component\HttpFoundation\HeaderBag', $c->getResponseHeaders());
56+
$this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getResponseHeaders());
5757
$this->assertSame('OK', $c->getStatusText());
5858
$this->assertSame(200, $c->getStatusCode());
5959
$this->assertSame('application/json', $c->getContentType());

0 commit comments

Comments
 (0)