public function run(Request $request = null) { $this->_router = $this->getBootstrap()->getResource("router") ? $this->getBootstrap()->getResource("router") : new Router(); $this->_request = !$request ? Request::newHttp() : $request; $outputBuffer = ''; $this->getEventManager()->publish("loop.startup", array($this)); $status = $this->dispatch($this->_router->match($this->_request)); if (($layout = $this->getBootstrap()->getResource("layout")) instanceof Layout) { $layout->content = $this->_page; $outputBuffer = $layout->render($layout->getScriptName()); } else { $outputBuffer = $this->_page; } $this->getEventManager()->publish("loop.shutdown", array($this)); $this->sendHeaders($status["headers"]); echo $outputBuffer; }