Ip\Application::handleRequest PHP Method

handleRequest() public method

Handle HMVC request
public handleRequest ( Request $request, array $options = [], boolean $subrequest = true ) : Ip\Response\Json | Ip\Response\Layout | Ip\Response\PageNotFound | Ip\Response\Redirect | string
$request Request
$options array
$subrequest boolean
return Ip\Response\Json | Ip\Response\Layout | Ip\Response\PageNotFound | Ip\Response\Redirect | string
    public function handleRequest(Request $request, $options = array(), $subrequest = true)
    {
        \Ip\ServiceLocator::addRequest($request);
        $rawResponse = $this->_handleOnlyRequest($request, $options, $subrequest);
        if (!empty($options['returnRawResponse'])) {
            if ($subrequest) {
                \Ip\ServiceLocator::removeRequest();
            }
            return $rawResponse;
        }
        if (empty($rawResponse) || is_string($rawResponse) || $rawResponse instanceof \Ip\View) {
            if ($rawResponse instanceof \Ip\View) {
                $rawResponse = $rawResponse->render();
            }
            if (empty($rawResponse)) {
                $rawResponse = '';
            }
            $response = \Ip\ServiceLocator::response();
            $response->setContent($rawResponse);
        } elseif ($rawResponse instanceof \Ip\Response) {
            \Ip\ServiceLocator::setResponse($rawResponse);
            if ($subrequest) {
                \Ip\ServiceLocator::removeRequest();
            }
            return $rawResponse;
        } elseif ($rawResponse === null) {
            $response = \Ip\ServiceLocator::response();
        } else {
            \Ip\ServiceLocator::removeRequest();
            throw new \Ip\Exception('Unknown response');
        }
        if ($subrequest) {
            \Ip\ServiceLocator::removeRequest();
        }
        return $response;
    }