/** * Launches a new request. This would be the main entry for a Phlite * framework handled request. */ function __invoke() { Signal::connect('php.fatal', array($this, '__onShutdown')); Signal::connect('php.exception', array($this, '__onUnhandledException')); $this->loadMiddleware(); Signal::send('request.start', $this); try { $request = $this->getRequest(); $response = $this->getResponse($request); $response = $this->processResponse($request, $response); } catch (UnicodeException $ex) { $response = new HttpResponseBadRequest(); } catch (HttpException $ex) { $response = $ex->getResponse($request); } catch (\Exception $ex) { // TODO: Handle unhandled exception here return $this->middleware->reverse()->processException($request, $ex); } if ($response) { $response->setHandler($this); return $response->output($request); } }