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()); |