Naify\Router\RouteDispatcher クラス PHP 8.0+ 8.1 → readonly

ルートディスパッチャー — MVC コントローラディスパッチ

RouteFactory から生成され、リクエストを適切なコントローラ+アクションへ ディスパッチする。文字列ハンドラを正規化してクラス名とアクション名を取り出し、 RequestContext を渡してコントローラの handle() を呼び出す。

受け付けるハンドラ文字列:

  • IndexController@index(推奨)
  • IndexController::index(既存互換)
  • IndexController->index
  • Admin/UserController::show
  • Admin.UserController::show

解釈ルール:

  • 区切りの :: / @ / -> はすべてアクション指定として扱う
  • クラス側の \\ / / / . は namespace 区切りとして扱う
  • 実際のメソッドを直接呼ぶのではなく、RequestContextHandlerInterface::handle()

に action 名を渡して処理を委ねる

使用例

// 通常は RouteFactory または Router の文字列ハンドラ遅延解決で生成される
$dispatcher = new RouteDispatcher('IndexController@index', 'App\\Controllers\\');

プロパティ

名前型説明
private $handler string ハンドラ文字列
private $namespace ?string 名前空間

メソッド

メソッド説明
public __construct(string $handler, ?string $namespace): ディスパッチ対象を表す文字列ハンドラを初期化する
public dispatch(RequestContext $context): RequestContext RequestContext を受け取り、コントローラへディスパッチする