Роутер работает некорректно

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

<?php

namespace app;

use app\controllers\auth\AuthController;
use app\controllers\home\HomeController;
use app\controllers\pages\PagesController;
use app\controllers\roles\RolesController;
use app\controllers\users\UsersController;
use app\controllers\todo\tasks\ToDoTasksController;

class Router
{

    private $routes = [
        '/^\/' . APP_BASE_PATH . '\/?$/' => ['controller' => 'home\\HomeController', 'action' => 'index'],
        '/^\/' . APP_BASE_PATH . '\/users(\/(?P<action>[a-z]+)(\/(?P<id>\d+))?)?$/' => ['controller' => 'users\\UsersController'],
        '/^\/' . APP_BASE_PATH . '\/auth(\/(?P<action>[a-z]+)(\/(?P<id>\d+))?)?$/' => ['controller' => 'auth\\AuthController'],
        '/^\/' . APP_BASE_PATH . '\/roles(\/(?P<action>[a-z]+)(\/(?P<id>\d+))?)?$/' => ['controller' => 'roles\\RolesController'],
        '/^\/' . APP_BASE_PATH . '\/pages(\/(?P<action>[a-z]+)(\/(?P<id>\d+))?)?$/' => ['controller' => 'pages\\PagesController'],
        '/^\/' . APP_BASE_PATH . '\/todo\/categories(\/(?P<action>[a-z]+)(\/(?P<id>\d+))?)?$/' => ['controller' => 'todo\\categories\\ToDoCategoriesController'],
        '/^\/' . APP_BASE_PATH . '\/todo\/tasks(\/(?P<action>[a-z]+)(\/(?P<id>\d+))?)?$/' => ['controller' => 'todo\\tasks\\ToDoTasksController'],
       ==> Вот она '/^\/' . APP_BASE_PATH . '\/todo\/tasks\/tag(\/(?P<id>\d+))?$/' => ['controller' => 'todo\\tasks\\ToDoTasksController', 'action' => 'tasksByTag'], <== Вот она
    ];

    public function run()
    {

        $uri = $_SERVER['REQUEST_URI'];
        $controller = null;
        $action = null;
        $params = null;

        foreach ($this->routes as $pattern => $route) {

            if (preg_match($pattern, $uri, $matches)) {

                $controller = 'app\\controllers\\' . $route['controller'];
                $action = $route['action'] ?? $matches['action'] ?? 'index';
                $params = array_filter($matches, 'is_string', ARRAY_FILTER_USE_KEY);
                break;

            }

        }

        if (!$controller) {
            http_response_code(404);
            echo 'Страница не найдена';
            return;
        }

        $controllerInstance = new $controller();

        if (!method_exists($controllerInstance, $action)) {
            http_response_code(404);
            echo 'Страница не найдена';
            return;
        }

        call_user_func_array([$controllerInstance, $action], [$params]);

    }

}

А вот что я получаю: введите сюда описание изображения


Ответы (0 шт):