Collects data for the given Request and Response.
@api
Request $request A Request instance:
Response $response A Response instance:
\Exception $exception An Exception instance:
Overrides DataCollectorInterface::collect
public function collect(Request $request, Response $response, \Exception $exception = null) {
$responseHeaders = $response->headers
->all();
$cookies = array();
foreach ($response->headers
->getCookies() as $cookie) {
$cookies[] = $this
->getCookieHeader($cookie
->getName(), $cookie
->getValue(), $cookie
->getExpiresTime(), $cookie
->getPath(), $cookie
->getDomain(), $cookie
->isSecure(), $cookie
->isHttpOnly());
}
if (count($cookies) > 0) {
$responseHeaders['Set-Cookie'] = $cookies;
}
$attributes = array();
foreach ($request->attributes
->all() as $key => $value) {
if (is_object($value)) {
$attributes[$key] = sprintf('Object(%s)', get_class($value));
if (is_callable(array(
$value,
'__toString',
))) {
$attributes[$key] .= sprintf(' = %s', (string) $value);
}
}
else {
$attributes[$key] = $value;
}
}
$content = null;
try {
$content = $request
->getContent();
} catch (\LogicException $e) {
// the user already got the request content as a resource
$content = false;
}
$sessionMetadata = array();
$sessionAttributes = array();
$flashes = array();
if ($request
->hasSession()) {
$session = $request
->getSession();
if ($session
->isStarted()) {
$sessionMetadata['Created'] = date(DATE_RFC822, $session
->getMetadataBag()
->getCreated());
$sessionMetadata['Last used'] = date(DATE_RFC822, $session
->getMetadataBag()
->getLastUsed());
$sessionMetadata['Lifetime'] = $session
->getMetadataBag()
->getLifetime();
$sessionAttributes = $session
->all();
$flashes = $session
->getFlashBag()
->peekAll();
}
}
$this->data = array(
'format' => $request
->getRequestFormat(),
'content' => $content,
'content_type' => $response->headers
->get('Content-Type') ? $response->headers
->get('Content-Type') : 'text/html',
'status_code' => $response
->getStatusCode(),
'request_query' => $request->query
->all(),
'request_request' => $request->request
->all(),
'request_headers' => $request->headers
->all(),
'request_server' => $request->server
->all(),
'request_cookies' => $request->cookies
->all(),
'request_attributes' => $attributes,
'response_headers' => $responseHeaders,
'session_metadata' => $sessionMetadata,
'session_attributes' => $sessionAttributes,
'flashes' => $flashes,
'path_info' => $request
->getPathInfo(),
'controller' => 'n/a',
);
if (isset($this->controllers[$request])) {
$controller = $this->controllers[$request];
if (is_array($controller)) {
$r = new \ReflectionMethod($controller[0], $controller[1]);
$this->data['controller'] = array(
'class' => get_class($controller[0]),
'method' => $controller[1],
'file' => $r
->getFilename(),
'line' => $r
->getStartLine(),
);
}
elseif ($controller instanceof \Closure) {
$this->data['controller'] = 'Closure';
}
else {
$this->data['controller'] = (string) $controller ?: 'n/a';
}
unset($this->controllers[$request]);
}
}