public function run(string $uri, string $position = 'before')
	{
		$this->initialize(strtolower($uri));

		foreach ($this->filters[$position] as $alias => $rules)
		{
			if (is_numeric($alias) && is_string($rules))
			{
				$alias = $rules;
			}

			if (! array_key_exists($alias, $this->config->aliases))
			{
				throw FilterException::forNoAlias($alias);
			}

			$class = new $this->config->aliases[$alias]();

			if (! $class instanceof FilterInterface)
			{
				throw FilterException::forIncorrectInterface(get_class($class));
			}

			if ($position === 'before')
			{
				$result = $class->before($this->request, $this->arguments[$alias] ?? null);

				if ($result instanceof RequestInterface)
				{
					$this->request = $result;
					continue;
				}

				// If the response object was sent back,
				// then send it and quit.
				if ($result instanceof ResponseInterface)
				{
					// short circuit - bypass any other filters
					return $result;
				}

				// Ignore an empty result
				if (empty($result))
				{
					continue;
				}

				return $result;
			}
			elseif ($position === 'after')
			{
				$result = $class->after($this->request, $this->response);

				if ($result instanceof ResponseInterface)
				{
					$this->response = $result;
					continue;
				}
			}
		}

		return $position === 'before' ? $this->request : $this->response;
	}
public function run(string $uri, string $position = 'before')
	{
		$this->initialize(strtolower($uri));

		foreach ($this->filters[$position] as $alias => $rules)
		{
			if (is_numeric($alias) && is_string($rules))
			{
				$alias = $rules;
			}

			if (! array_key_exists($alias, $this->config->aliases))
			{
				throw FilterException::forNoAlias($alias);
			}

			$class = new $this->config->aliases[$alias]();

			if (! $class instanceof FilterInterface)
			{
				throw FilterException::forIncorrectInterface(get_class($class));
			}

			if ($position === 'before')
			{
				$result = $class->before($this->request, $this->arguments[$alias] ?? null);

				if ($result instanceof RequestInterface)
				{
					$this->request = $result;
					continue;
				}

				// If the response object was sent back,
				// then send it and quit.
				if ($result instanceof ResponseInterface)
				{
					// short circuit - bypass any other filters
					return $result;
				}

				// Ignore an empty result
				if (empty($result))
				{
					continue;
				}

				return $result;
			}
			elseif ($position === 'after')
			{
				$result = $class->after($this->request, $this->response);

				if ($result instanceof ResponseInterface)
				{
					$this->response = $result;
					continue;
				}
			}
		}

		return $position === 'before' ? $this->request : $this->response;
	}
public function run ( string $ uri , string $ position = 'before' ) { $ this -> initialize ( strtolower ( $ uri ) ) ; foreach ( $ this -> filters [ $ position ] as $ alias => $ rules ) { if ( is_numeric ( $ alias ) && is_string ( $ rules ) ) { $ alias = $ rules ; } if ( ! array_key_exists ( $ alias , $ this -> config -> aliases ) ) { throw FilterException :: forNoAlias ( $ alias ) ; } $ class = new $ this -> config -> aliases [ $ alias ] ( ) ; if ( ! $ class instanceof FilterInterface ) { throw FilterException :: forIncorrectInterface ( get_class ( $ class ) ) ; } if ( $ position === 'before' ) { $ result = $ class -> before ( $ this -> request , $ this -> arguments [ $ alias ] ?? null ) ; if ( $ result instanceof RequestInterface ) { $ this -> request = $ result ; continue ; } // If the response object was sent back, // then send it and quit. if ( $ result instanceof ResponseInterface ) { // short circuit - bypass any other filters return $ result ; } // Ignore an empty result if ( empty ( $ result ) ) { continue ; } return $ result ; } elseif ( $ position === 'after' ) { $ result = $ class -> after ( $ this -> request , $ this -> response ) ; if ( $ result instanceof ResponseInterface ) { $ this -> response = $ result ; continue ; } } } return $ position === 'before' ? $ this -> request : $ this -> response ; }
Runs through all of the filters for the specified
uri and position.

@param string $uri
@param string $position

@return \CodeIgniter\HTTP\RequestInterface|\CodeIgniter\HTTP\ResponseInterface|mixed
@throws \CodeIgniter\Filters\Exceptions\FilterException
Runs through all of the filters for the specified uri and position .