/** * Prepares the response object to return an HTTP Redirect response to the client. * * @param string $route The redirect destination like controller/action * @param boolean $permanent If permanent redirection or not. * @param boolean $exit */ public function redirect($route, $permanent = false, $exit = true) { $url = Url::compute($route); Header::clear(); $permanent === true ? Header::sendMovedPermanently() : Header::sendFound(); Header::toLocation($url, $exit); }
/** * Handle an exception and display the exception report. * * @param \Exception $exception * @param boolean $exit */ public static function exception(\Exception $exception, $exit = true) { static::log($exception); ob_get_length() > 0 and ob_get_level() and ob_end_clean(); $conf = Registry::get('conf'); if (isset($conf['error']['debug_info']) && $conf['error']['debug_info'] === true) { echo static::format($exception); if ($exit) { exit; } } Header::clear(); if ($exception instanceof \Pimf\Controller\Exception || $exception instanceof \Pimf\Resolver\Exception) { Event::first('404', array($exception)); Header::sendNotFound(null, $exit); } else { Event::first('500', array($exception)); Header::sendInternalServerError(null, $exit); } }
/** * @throws \RuntimeException */ private function preventMultipleCaching() { if ($this->method != 'GET') { Header::clear(); throw new \RuntimeException('HTTP cache headers can only take effect if request was sent via GET method!'); } if (self::$cached === true) { Header::clear(); throw new \RuntimeException('only one HTTP cache-control can be sent!'); } }