Naify\Router\RouteGroup クラス

ルートグループ — Slim\Routing\RouteCollectorProxy 代替

ルート定義をプレフィックス付きでグループ化する。 routes.php の group() コールバック内で使い、共通の URL 接頭辞をまとめたい時に使う。

できること:

  • 共通 prefix 配下に any/get/head/options/post/put/delete/patch でルートをまとめて登録する
  • group() をネストして /api + /v1 のような階層を組み立てる
  • addMiddleware() で、この RouteGroup 経由で登録したルートへ一括適用する

prefix の扱い:

  • prefix と子 pattern は単純に文字列連結される
  • /admin + /users のような書き方でも、/gallery/ + artworks/{id} でもよい
  • ただし正規化はしないので、スラッシュの位置は定義側で揃える

使用例

$app->group('/gallery/', function(RouteGroup $group) use ($ctrl) {
    $group->any('[index]', $ctrl('Gallery/IndexController@index'));
    $group->any('artworks/{id}', $ctrl('Gallery/ArtworksController@detail'));
});

$router->group('/api', function (RouteGroup $group) {
    $group->group('/v1', function (RouteGroup $inner) {
        $inner->get('/users', $handler);
        $inner->get('/posts/{id}', $handler);
    });
    $group->get('/health', $handler);
});

プロパティ

名前型説明
private $router Router 実際のルート登録先になる親ルーター
private $prefix string このグループ配下へ付与される URL プレフィックス
private $routes array このグループ経由で登録されたルート一覧。middleware 伝播にも使う

メソッド

メソッド説明
public __construct(Router $router, string $prefix): prefix 付きルートグループを初期化する
public any(string $pattern, callable|string $handler): Route 全メソッド対応ルートを登録する
public get(string $pattern, callable|string $handler): Route GET ルートを登録する
public head(string $pattern, callable|string $handler): Route グループの URL 接頭辞を付けて HEAD 専用ルートを登録する。
例: /api グループ内の head('/items/{id}', $handler) は /api/items/{id} に対応する。
グループへの addMiddleware() はこのルートにも適用される。
public options(string $pattern, callable|string $handler): Route グループの URL 接頭辞を付けて OPTIONS 専用ルートを登録する。
グループへの addMiddleware() はこのルートにも適用される。
Allow・CORS ヘッダーなど、OPTIONS 応答の内容はハンドラで定義する。
public post(string $pattern, callable|string $handler): Route POST ルートを登録する
public put(string $pattern, callable|string $handler): Route PUT ルートを登録する
public delete(string $pattern, callable|string $handler): Route DELETE ルートを登録する
public patch(string $pattern, callable|string $handler): Route PATCH ルートを登録する
public group(string $prefix, callable $callback): static ネストしたグループを作成する
子グループで登録された Route は親グループにも集約し、
親側の `addMiddleware()` が子ルートへも届くようにする。
public addMiddleware(MiddlewareInterface $middleware): static グループ内の全ルートにミドルウェアを追加する
Usage:
$router->group('/admin/', function(RouteGroup $group) use ($ctrl) {
$group->any('dashboard', $ctrl('Admin@dashboard'));
$group->any('users', $ctrl('Admin@users'));
})->addMiddleware(new RequireAuthMiddleware());