Как хранить массив middleware для группы роутов?

В PHP для хранения массива middleware для группы роутов можно воспользоваться различными подходами. Один из возможных способов - использование ассоциативного массива, где ключами будут идентификаторы групп роутов, а значениями - массивы middleware.

Примерно такой код можно использовать для описания группы роутов с middleware:

$routes = [
    'admin' => [
        'middleware' => [
            'auth',
            'admin_access',
        ],
        'routes' => [
            '/dashboard' => 'DashboardController@index',
            '/users' => 'UserController@index',
        ],
    ],
    'api' => [
        'middleware' => [
            'auth',
        ],
        'routes' => [
            '/users' => 'UserController@apiIndex',
        ],
    ],
];

В данном примере у нас есть две группы роутов: "admin" и "api". Каждая группа содержит массив middleware и массив routes.

Массив middleware содержит имена middleware, которые будут применяться ко всем роутам из данной группы. Можно указывать middleware в любом удобном для вас формате, например, в виде строк с именами функций или классов.

Массив routes содержит описание самих роутов. Ключами являются пути к роутам, а значениями - обработчики соответствующих роутов.

При настройке роутера или фреймворка вы можете использовать этот массив для определения middleware для каждой группы роутов. В зависимости от вашего фреймворка или роутера, процесс может отличаться, но примерно он будет выглядеть так:

// Подключаем все необходимые классы и настройки фреймворка или роутера

// Инициализируем роутер
$router = new Router();

// Регистрируем роуты и middleware для каждой группы из массива $routes
foreach ($routes as $groupName => $group) {
    // Регистрируем middleware для группы роутов
    foreach ($group['middleware'] as $middleware) {
        $router->addMiddleware($middleware);
    }
    
    // Регистрируем роуты для группы
    foreach ($group['routes'] as $path => $handler) {
        $router->addRoute($path, $handler);
    }
}

// Запускаем роутер
$router->run();

Таким образом, используя данный подход, вы можете легко задавать middleware для группы роутов в PHP. Конечно, все зависит от используемого фреймворка или роутера, но общий принцип остается примерно одинаковым.