Skip to content

Commit 3a58412

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

File tree

6 files changed

+67
-35
lines changed

6 files changed

+67
-35
lines changed

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

Lines changed: 7 additions & 14 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.
@@ -70,33 +72,24 @@ public function panelAction($token)
7072
return new Response($this->twig->render('@WebProfiler/Router/panel.html.twig', array(
7173
'request' => $request,
7274
'router' => $profile->getCollector('router'),
73-
'traces' => $this->getTraces($request, $profile->getMethod()),
75+
'traces' => $this->getTraces($request->getRequest(), $profile->getMethod()),
7476
)), 200, array('Content-Type' => 'text/html'));
7577
}
7678

7779
/**
7880
* Returns the routing traces associated to the given request.
7981
*
80-
* @param RequestDataCollector $request
81-
* @param string $method
82+
* @param Request $request
83+
* @param string $method
8284
*
8385
* @return array
8486
*/
85-
private function getTraces(RequestDataCollector $request, $method)
87+
private function getTraces(Request $request, $method)
8688
{
87-
$traceRequest = Request::create(
88-
$request->getPathInfo(),
89-
$request->getRequestServer()->get('REQUEST_METHOD'),
90-
$request->getRequestAttributes()->all(),
91-
$request->getRequestCookies()->all(),
92-
array(),
93-
$request->getRequestServer()->all()
94-
);
95-
9689
$context = $this->matcher->getContext();
9790
$context->setMethod($method);
9891
$matcher = new TraceableUrlMatcher($this->routes, $context);
9992

100-
return $matcher->getTracesForRequest($traceRequest);
93+
return $matcher->getTracesForRequest($request);
10194
}
10295
}

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: 43 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,19 @@ 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+
129+
$this->data['request_raw'] = array(
130+
$attributes,
131+
$request->cookies->all(),
132+
$request->server->all(),
133+
);
134+
128135
if (isset($this->controllers[$request])) {
129136
$this->data['controller'] = $this->parseController($this->controllers[$request]);
130137
unset($this->controllers[$request]);
@@ -148,6 +155,18 @@ public function collect(Request $request, Response $response, \Exception $except
148155
}
149156
}
150157

158+
public function getRequest()
159+
{
160+
return Request::create(
161+
$this->data['path_info'],
162+
$this->data['method'],
163+
$this->data['request_raw'][0],
164+
$this->data['request_raw'][1],
165+
array(),
166+
$this->data['request_raw'][2]
167+
);
168+
}
169+
151170
public function getMethod()
152171
{
153172
return $this->data['method'];
@@ -170,7 +189,7 @@ public function getRequestQuery()
170189

171190
public function getRequestHeaders()
172191
{
173-
return new HeaderBag($this->data['request_headers']);
192+
return new ParameterBag($this->data['request_headers']);
174193
}
175194

176195
public function getRequestServer()
@@ -190,7 +209,7 @@ public function getRequestAttributes()
190209

191210
public function getResponseHeaders()
192211
{
193-
return new ResponseHeaderBag($this->data['response_headers']);
212+
return new ParameterBag($this->data['response_headers']);
194213
}
195214

196215
public function getSessionMetadata()
@@ -264,7 +283,17 @@ public function getIdentifier()
264283
*/
265284
public function getRouteParams()
266285
{
267-
return isset($this->data['request_attributes']['_route_params']) ? $this->data['request_attributes']['_route_params'] : $this->cloneVar(array());
286+
if (!isset($this->data['request_attributes']['_route_params'])) {
287+
return array();
288+
}
289+
290+
$data = $this->data['request_attributes']['_route_params'];
291+
$params = array();
292+
foreach ($data->getRawData()[1] as $k => $v) {
293+
$params[$k] = $data->seek($k);
294+
}
295+
296+
return $params;
268297
}
269298

270299
/**

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)