/** * 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(); }
public function testRedirect() { $url = 'http://google.com/'; $code = 302; $response = new Response(); $response->redirect($url, $code); $this->assertSame($code, $response->code()); $this->assertSame($url, $response->headers()->get('location')); $this->assertTrue($response->isLocked()); }