protected function handleRequest(RouteCollectionInterface $routes = null, $cacheConfig, bool $returnResponse = false)
	{
		$routeFilter = $this->tryToRouteIt($routes);

		// Run "before" filters
		$filters = Services::filters();

		// If any filters were specified within the routes file,
		// we need to ensure it's active for the current request
		if (! is_null($routeFilter))
		{
			$filters->enableFilter($routeFilter, 'before');
			$filters->enableFilter($routeFilter, 'after');
		}

		$uri = $this->request instanceof CLIRequest ? $this->request->getPath() : $this->request->uri->getPath();

		// Never run filters when running through Spark cli
		if (! defined('SPARKED'))
		{
			$possibleRedirect = $filters->run($uri, 'before');
			if ($possibleRedirect instanceof RedirectResponse)
			{
				return $possibleRedirect->send();
			}
			// If a Response instance is returned, the Response will be sent back to the client and script execution will stop
			if ($possibleRedirect instanceof ResponseInterface)
			{
				return $possibleRedirect->send();
			}
		}

		$returned = $this->startController();

		// Closure controller has run in startController().
		if (! is_callable($this->controller))
		{
			$controller = $this->createController();

			// Is there a "post_controller_constructor" event?
			Events::trigger('post_controller_constructor');

			$returned = $this->runController($controller);
		}
		else
		{
			$this->benchmark->stop('controller_constructor');
			$this->benchmark->stop('controller');
		}

		// If $returned is a string, then the controller output something,
		// probably a view, instead of echoing it directly. Send it along
		// so it can be used with the output.
		$this->gatherOutput($cacheConfig, $returned);

		// Never run filters when running through Spark cli
		if (! defined('SPARKED'))
		{
			$filters->setResponse($this->response);
			// Run "after" filters
			$response = $filters->run($uri, 'after');
		}
		else
		{
			$response = $this->response;
		}

		if ($response instanceof Response)
		{
			$this->response = $response;
		}

		// Save our current URI as the previous URI in the session
		// for safer, more accurate use with `previous_url()` helper function.
		$this->storePreviousURL($this->request->uri ?? $uri);

		unset($uri);

		if (! $returnResponse)
		{
			$this->sendResponse();
		}

		//--------------------------------------------------------------------
		// Is there a post-system event?
		//--------------------------------------------------------------------
		Events::trigger('post_system');

		return $this->response;
	}
protected function handleRequest(RouteCollectionInterface $routes = null, $cacheConfig, bool $returnResponse = false)
	{
		$routeFilter = $this->tryToRouteIt($routes);

		// Run "before" filters
		$filters = Services::filters();

		// If any filters were specified within the routes file,
		// we need to ensure it's active for the current request
		if (! is_null($routeFilter))
		{
			$filters->enableFilter($routeFilter, 'before');
			$filters->enableFilter($routeFilter, 'after');
		}

		$uri = $this->request instanceof CLIRequest ? $this->request->getPath() : $this->request->uri->getPath();

		// Never run filters when running through Spark cli
		if (! defined('SPARKED'))
		{
			$possibleRedirect = $filters->run($uri, 'before');
			if ($possibleRedirect instanceof RedirectResponse)
			{
				return $possibleRedirect->send();
			}
			// If a Response instance is returned, the Response will be sent back to the client and script execution will stop
			if ($possibleRedirect instanceof ResponseInterface)
			{
				return $possibleRedirect->send();
			}
		}

		$returned = $this->startController();

		// Closure controller has run in startController().
		if (! is_callable($this->controller))
		{
			$controller = $this->createController();

			// Is there a "post_controller_constructor" event?
			Events::trigger('post_controller_constructor');

			$returned = $this->runController($controller);
		}
		else
		{
			$this->benchmark->stop('controller_constructor');
			$this->benchmark->stop('controller');
		}

		// If $returned is a string, then the controller output something,
		// probably a view, instead of echoing it directly. Send it along
		// so it can be used with the output.
		$this->gatherOutput($cacheConfig, $returned);

		// Never run filters when running through Spark cli
		if (! defined('SPARKED'))
		{
			$filters->setResponse($this->response);
			// Run "after" filters
			$response = $filters->run($uri, 'after');
		}
		else
		{
			$response = $this->response;
		}

		if ($response instanceof Response)
		{
			$this->response = $response;
		}

		// Save our current URI as the previous URI in the session
		// for safer, more accurate use with `previous_url()` helper function.
		$this->storePreviousURL($this->request->uri ?? $uri);

		unset($uri);

		if (! $returnResponse)
		{
			$this->sendResponse();
		}

		//--------------------------------------------------------------------
		// Is there a post-system event?
		//--------------------------------------------------------------------
		Events::trigger('post_system');

		return $this->response;
	}
protected function handleRequest ( RouteCollectionInterface $ routes = null , $ cacheConfig , bool $ returnResponse = false ) { $ routeFilter = $ this -> tryToRouteIt ( $ routes ) ; // Run "before" filters $ filters = Services :: filters ( ) ; // If any filters were specified within the routes file, // we need to ensure it's active for the current request if ( ! is_null ( $ routeFilter ) ) { $ filters -> enableFilter ( $ routeFilter , 'before' ) ; $ filters -> enableFilter ( $ routeFilter , 'after' ) ; } $ uri = $ this -> request instanceof CLIRequest ? $ this -> request -> getPath ( ) : $ this -> request -> uri -> getPath ( ) ; // Never run filters when running through Spark cli if ( ! defined ( 'SPARKED' ) ) { $ possibleRedirect = $ filters -> run ( $ uri , 'before' ) ; if ( $ possibleRedirect instanceof RedirectResponse ) { return $ possibleRedirect -> send ( ) ; } // If a Response instance is returned, the Response will be sent back to the client and script execution will stop if ( $ possibleRedirect instanceof ResponseInterface ) { return $ possibleRedirect -> send ( ) ; } } $ returned = $ this -> startController ( ) ; // Closure controller has run in startController(). if ( ! is_callable ( $ this -> controller ) ) { $ controller = $ this -> createController ( ) ; // Is there a "post_controller_constructor" event? Events :: trigger ( 'post_controller_constructor' ) ; $ returned = $ this -> runController ( $ controller ) ; } else { $ this -> benchmark -> stop ( 'controller_constructor' ) ; $ this -> benchmark -> stop ( 'controller' ) ; } // If $returned is a string, then the controller output something, // probably a view, instead of echoing it directly. Send it along // so it can be used with the output. $ this -> gatherOutput ( $ cacheConfig , $ returned ) ; // Never run filters when running through Spark cli if ( ! defined ( 'SPARKED' ) ) { $ filters -> setResponse ( $ this -> response ) ; // Run "after" filters $ response = $ filters -> run ( $ uri , 'after' ) ; } else { $ response = $ this -> response ; } if ( $ response instanceof Response ) { $ this -> response = $ response ; } // Save our current URI as the previous URI in the session // for safer, more accurate use with `previous_url()` helper function. $ this -> storePreviousURL ( $ this -> request -> uri ?? $ uri ) ; unset ( $ uri ) ; if ( ! $ returnResponse ) { $ this -> sendResponse ( ) ; } //-------------------------------------------------------------------- // Is there a post-system event? //-------------------------------------------------------------------- Events :: trigger ( 'post_system' ) ; return $ this -> response ; }
Handles the main request logic and fires the controller.

@param \CodeIgniter\Router\RouteCollectionInterface $routes
@param $cacheConfig
@param boolean                                      $returnResponse

@return \CodeIgniter\HTTP\RequestInterface|\CodeIgniter\HTTP\Response|\CodeIgniter\HTTP\ResponseInterface|mixed
@throws \CodeIgniter\Router\Exceptions\RedirectException
Handles the main request logic and fires the controller .