Парсинг url

Иногда нам нужно распарсить урл, для получения например контроллера и метода, получить параметры не через глобальный массив $_GET

Для этого конечно можно устраивать танцы с бубном над функциями explode,strstr и т.п. Но проще это сделать с помощью готовых решений:

        
$parseUrl = parse_url($_SERVER['REQUEST_URI']);

        if (!empty($parseUrl['path'])) {
            $routes = explode('/', $parseUrl['path']);

            if (!empty($parseUrl['query'])) {
                parse_str($parseUrl['query'], $queryUrl);
            }

$arrRoutes = array_reverse(array_diff($routes, ['']));



    public function initialize(): void
    {
        $parseUrl = parse_url($_SERVER['REQUEST_URI']);

        if (!empty($parseUrl['path'])) {
            $routes = explode('/', $parseUrl['path']);

            if (!empty($parseUrl['query'])) {
                parse_str($parseUrl['query'], $queryUrl);
            }

            $arrRoutes = array_reverse(array_diff($routes, ['']));

            try {
                if (count($arrRoutes) > 0) {
                    $nameController = $arrRoutes[1] ?? $arrRoutes[0];

                    if (!empty($arrRoutes[1])) {
                        $this->actionName = $arrRoutes[0];
                    }

                    $this->controllerName = $nameController;
                }
            } catch (NotExistFileException $e) {
                self::errorPage404();
            }
        }
 }