[ Index ] |
PHP Cross Reference of phpBB-3.2.11-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12 namespace Symfony\Component\HttpKernel\DataCollector; 13 14 use Symfony\Component\EventDispatcher\EventSubscriberInterface; 15 use Symfony\Component\HttpFoundation\ParameterBag; 16 use Symfony\Component\HttpFoundation\Request; 17 use Symfony\Component\HttpFoundation\Response; 18 use Symfony\Component\HttpKernel\Event\FilterControllerEvent; 19 use Symfony\Component\HttpKernel\KernelEvents; 20 21 /** 22 * @author Fabien Potencier <fabien@symfony.com> 23 */ 24 class RequestDataCollector extends DataCollector implements EventSubscriberInterface 25 { 26 protected $controllers; 27 28 public function __construct() 29 { 30 $this->controllers = new \SplObjectStorage(); 31 } 32 33 /** 34 * {@inheritdoc} 35 */ 36 public function collect(Request $request, Response $response, \Exception $exception = null) 37 { 38 $responseHeaders = $response->headers->all(); 39 foreach ($response->headers->getCookies() as $cookie) { 40 $responseHeaders['set-cookie'][] = (string) $cookie; 41 } 42 43 // attributes are serialized and as they can be anything, they need to be converted to strings. 44 $attributes = array(); 45 foreach ($request->attributes->all() as $key => $value) { 46 if ('_route' === $key && \is_object($value)) { 47 $attributes[$key] = $this->varToString($value->getPath()); 48 } elseif ('_route_params' === $key) { 49 // we need to keep route params as an array (see getRouteParams()) 50 foreach ($value as $k => $v) { 51 $value[$k] = $this->varToString($v); 52 } 53 $attributes[$key] = $value; 54 } else { 55 $attributes[$key] = $this->varToString($value); 56 } 57 } 58 59 $content = null; 60 try { 61 $content = $request->getContent(); 62 } catch (\LogicException $e) { 63 // the user already got the request content as a resource 64 $content = false; 65 } 66 67 $sessionMetadata = array(); 68 $sessionAttributes = array(); 69 $flashes = array(); 70 if ($request->hasSession()) { 71 $session = $request->getSession(); 72 if ($session->isStarted()) { 73 $sessionMetadata['Created'] = date(DATE_RFC822, $session->getMetadataBag()->getCreated()); 74 $sessionMetadata['Last used'] = date(DATE_RFC822, $session->getMetadataBag()->getLastUsed()); 75 $sessionMetadata['Lifetime'] = $session->getMetadataBag()->getLifetime(); 76 $sessionAttributes = $session->all(); 77 $flashes = $session->getFlashBag()->peekAll(); 78 } 79 } 80 81 $statusCode = $response->getStatusCode(); 82 83 $this->data = array( 84 'format' => $request->getRequestFormat(), 85 'content' => $content, 86 'content_type' => $response->headers->get('Content-Type', 'text/html'), 87 'status_text' => isset(Response::$statusTexts[$statusCode]) ? Response::$statusTexts[$statusCode] : '', 88 'status_code' => $statusCode, 89 'request_query' => $request->query->all(), 90 'request_request' => $request->request->all(), 91 'request_headers' => $request->headers->all(), 92 'request_server' => $request->server->all(), 93 'request_cookies' => $request->cookies->all(), 94 'request_attributes' => $attributes, 95 'response_headers' => $responseHeaders, 96 'session_metadata' => $sessionMetadata, 97 'session_attributes' => $sessionAttributes, 98 'flashes' => $flashes, 99 'path_info' => $request->getPathInfo(), 100 'controller' => 'n/a', 101 'locale' => $request->getLocale(), 102 ); 103 104 if (isset($this->data['request_headers']['php-auth-pw'])) { 105 $this->data['request_headers']['php-auth-pw'] = '******'; 106 } 107 108 if (isset($this->data['request_server']['PHP_AUTH_PW'])) { 109 $this->data['request_server']['PHP_AUTH_PW'] = '******'; 110 } 111 112 if (isset($this->data['request_request']['_password'])) { 113 $this->data['request_request']['_password'] = '******'; 114 } 115 116 foreach ($this->data as $key => $value) { 117 if (!\is_array($value)) { 118 continue; 119 } 120 if ('request_headers' === $key || 'response_headers' === $key) { 121 $value = array_map(function ($v) { return isset($v[0]) && !isset($v[1]) ? $v[0] : $v; }, $value); 122 } 123 if ('request_server' !== $key && 'request_cookies' !== $key) { 124 $this->data[$key] = $value; 125 } 126 } 127 128 if (isset($this->controllers[$request])) { 129 $controller = $this->controllers[$request]; 130 if (\is_array($controller)) { 131 try { 132 $r = new \ReflectionMethod($controller[0], $controller[1]); 133 $this->data['controller'] = array( 134 'class' => \is_object($controller[0]) ? \get_class($controller[0]) : $controller[0], 135 'method' => $controller[1], 136 'file' => $r->getFileName(), 137 'line' => $r->getStartLine(), 138 ); 139 } catch (\ReflectionException $e) { 140 if (\is_callable($controller)) { 141 // using __call or __callStatic 142 $this->data['controller'] = array( 143 'class' => \is_object($controller[0]) ? \get_class($controller[0]) : $controller[0], 144 'method' => $controller[1], 145 'file' => 'n/a', 146 'line' => 'n/a', 147 ); 148 } 149 } 150 } elseif ($controller instanceof \Closure) { 151 $r = new \ReflectionFunction($controller); 152 $this->data['controller'] = array( 153 'class' => $r->getName(), 154 'method' => null, 155 'file' => $r->getFileName(), 156 'line' => $r->getStartLine(), 157 ); 158 } elseif (\is_object($controller)) { 159 $r = new \ReflectionClass($controller); 160 $this->data['controller'] = array( 161 'class' => $r->getName(), 162 'method' => null, 163 'file' => $r->getFileName(), 164 'line' => $r->getStartLine(), 165 ); 166 } else { 167 $this->data['controller'] = (string) $controller ?: 'n/a'; 168 } 169 unset($this->controllers[$request]); 170 } 171 } 172 173 public function getPathInfo() 174 { 175 return $this->data['path_info']; 176 } 177 178 public function getRequestRequest() 179 { 180 return new ParameterBag($this->data['request_request']); 181 } 182 183 public function getRequestQuery() 184 { 185 return new ParameterBag($this->data['request_query']); 186 } 187 188 public function getRequestHeaders() 189 { 190 return new ParameterBag($this->data['request_headers']); 191 } 192 193 public function getRequestServer() 194 { 195 return new ParameterBag($this->data['request_server']); 196 } 197 198 public function getRequestCookies() 199 { 200 return new ParameterBag($this->data['request_cookies']); 201 } 202 203 public function getRequestAttributes() 204 { 205 return new ParameterBag($this->data['request_attributes']); 206 } 207 208 public function getResponseHeaders() 209 { 210 return new ParameterBag($this->data['response_headers']); 211 } 212 213 public function getSessionMetadata() 214 { 215 return $this->data['session_metadata']; 216 } 217 218 public function getSessionAttributes() 219 { 220 return $this->data['session_attributes']; 221 } 222 223 public function getFlashes() 224 { 225 return $this->data['flashes']; 226 } 227 228 public function getContent() 229 { 230 return $this->data['content']; 231 } 232 233 public function getContentType() 234 { 235 return $this->data['content_type']; 236 } 237 238 public function getStatusText() 239 { 240 return $this->data['status_text']; 241 } 242 243 public function getStatusCode() 244 { 245 return $this->data['status_code']; 246 } 247 248 public function getFormat() 249 { 250 return $this->data['format']; 251 } 252 253 public function getLocale() 254 { 255 return $this->data['locale']; 256 } 257 258 /** 259 * Gets the route name. 260 * 261 * The _route request attributes is automatically set by the Router Matcher. 262 * 263 * @return string The route 264 */ 265 public function getRoute() 266 { 267 return isset($this->data['request_attributes']['_route']) ? $this->data['request_attributes']['_route'] : ''; 268 } 269 270 /** 271 * Gets the route parameters. 272 * 273 * The _route_params request attributes is automatically set by the RouterListener. 274 * 275 * @return array The parameters 276 */ 277 public function getRouteParams() 278 { 279 return isset($this->data['request_attributes']['_route_params']) ? $this->data['request_attributes']['_route_params'] : array(); 280 } 281 282 /** 283 * Gets the controller. 284 * 285 * @return string The controller as a string 286 */ 287 public function getController() 288 { 289 return $this->data['controller']; 290 } 291 292 public function onKernelController(FilterControllerEvent $event) 293 { 294 $this->controllers[$event->getRequest()] = $event->getController(); 295 } 296 297 public static function getSubscribedEvents() 298 { 299 return array(KernelEvents::CONTROLLER => 'onKernelController'); 300 } 301 302 /** 303 * {@inheritdoc} 304 */ 305 public function getName() 306 { 307 return 'request'; 308 } 309 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Nov 11 20:33:01 2020 | Cross-referenced by PHPXref 0.7.1 |