public function testLockedNotModifiable() { $response = new Response(); $response->lock(); // Get initial values $protocol_version = $response->protocolVersion(); $body = $response->body(); $code = $response->code(); // Attempt to modify try { $response->protocolVersion('2.0'); } catch (LockedResponseException $e) { } try { $response->body('WOOT!'); } catch (LockedResponseException $e) { } try { $response->code(204); } catch (LockedResponseException $e) { } try { $response->prepend('cat'); } catch (LockedResponseException $e) { } try { $response->append('dog'); } catch (LockedResponseException $e) { } // Assert nothing has changed $this->assertSame($protocol_version, $response->protocolVersion()); $this->assertSame($body, $response->body()); $this->assertSame($code, $response->code()); }
/** * Alias to set a response code, lock the response, and halt the route matching/dispatching * * @param int $code Optional HTTP status code to send * @throws DispatchHaltedException To halt/skip the current dispatch loop * @access public * @return void */ public function abort($code = null) { if (null !== $code) { $this->response->code($code); } // Disallow further response modification $this->response->lock(); throw new DispatchHaltedException(); }
/** * Handles an HTTP error exception through our HTTP error callbacks * * @param HttpExceptionInterface $http_exception The exception that occurred * @param RouteCollection $matched The collection of routes that were matched in dispatch * @param array $methods_matched The HTTP methods that were matched in dispatch * @access protected * @return void */ protected function httpError(HttpExceptionInterface $http_exception, RouteCollection $matched, $methods_matched) { if (!$this->response->isLocked()) { $this->response->code($http_exception->getCode()); } if (count($this->httpErrorCallbacks) > 0) { foreach (array_reverse($this->httpErrorCallbacks) as $callback) { if ($callback instanceof Route) { $this->handleRouteCallback($callback, $matched, $methods_matched); } elseif (is_callable($callback)) { if (is_string($callback)) { $callback($http_exception->getCode(), $this, $matched, $methods_matched, $http_exception); } else { call_user_func($callback, $http_exception->getCode(), $this, $matched, $methods_matched, $http_exception); } } } } // Lock our response, since we probably don't want // anything else messing with our error code/body $this->response->lock(); }