Example #1
0
 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());
 }
Example #2
0
 /**
  * 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();
 }
Example #3
0
 /**
  * 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();
 }