/** * @param string $id * @param callable $engine * @param null $template * * @return mixed */ public function render($id, $engine = null, $template = null) { $definition = $this->app->views[$id]; if (!$engine) { $engine = \Patron\Engine::get_singleton(); } $page = $this->resolve_view_page($id); $class = $this->resolve_view_classname($definition); $view = new $class($id, $definition, $engine, $this->app->document, $page); $rc = $view(); return $template ? $engine($template, $rc) : $rc; }