如何在 Slim Framework 2 中使用自定义路由器?

How To Use A Custom Router With Slim Framework 2?

正在尝试获取 Slim Framework 中加载的所有路由的列表。需要知道如何使用自定义路由器 class,它添加了一种方法来获取受保护的 $routes 属性.

您似乎可以覆盖 Slim\Slim 构造函数并设置它将使用的路由器,或者您可以命名所有路由,然后使用 Slim\Router::getNamedRoutes() 方法访问集合。

<?php
$application->get(
    '/api',
    function () use ($application) {
        $routes = [];
        foreach ($application->router()->getNamedRoutes() as $route) {
            $routes[] = $route->getPattern();
        } 
        $application->response->headers->set('Content-Type', 'application/json');
        echo json_encode([
            'total' => count($routes),
            'routes' => $routes
        ]);
    }
)->name('api');

哪个会响应。

{
    total: 1,
    routes: [
        "/api"
    ]
}