public function __shutdown() { // Don't render the layout for json content if (Router::$extension == 'json') { $this->render['layout'] = false; } // Render the view $content = ''; if ($this->render['view']) { Body::append(View::render($this->render['view'])); } // Are we wrapping the view in a layout? if ($this->render['layout']) { $content = Body::content(); Body::clear(); Body::append(View::render("layouts/{$this->render['layout']}", array('content' => $content))); } else { Body::append($content); } // Set the X-Powered-By header and render the layout with the content header("X-Powered-By: Avalon/" . Kernel::version()); print(Body::content()); }
/** * Executes the routed request. */ public static function run() { // Start the app static::$app = new Router::$controller; // Before filters $filters = array_merge( isset(static::$app->before['*']) ? static::$app->before['*'] : array(), isset(static::$app->before[Router::$method]) ? static::$app->before[Router::$method] : array() ); foreach ($filters as $filter) { static::$app->{$filter}(Router::$method); } unset($filters, $filter); // Call the method $output = null; if (static::$app->render['action']) { $output = call_user_func_array(array(static::$app, 'action_' . Router::$method), Router::$vars); } // After filters $filters = array_merge( isset(static::$app->after['*']) ? static::$app->after['*'] : array(), isset(static::$app->after[Router::$method]) ? static::$app->after[Router::$method] : array() ); foreach ($filters as $filter) { static::$app->{$filter}(Router::$method); } unset($filters, $filter); // If an object is returned, use the `response` variable if it's set. if (is_object($output)) { $output = isset($output->response) ? $output->response : null; } // Check if we have any content if (static::$app->render['action'] and $output !== null) { static::$app->render['view'] = false; Body::append($output); // Get the content, clear the body // and append content to a clean slate. $content = Body::content(); Body::clear(); Body::append($content); } static::$app->__shutdown(); }