Skip to content

RouteSame — 同 URI 注册器

  • 文件位置: kernel/Foundation/Router/RouteSame.php
  • 命名空间: kernel\Foundation\Router
  • 是否可继承: 是
  • 继承: RouteRegister不继承 RouteGroup

用于同 URI 下细分 HTTP 方法。构造时设置 URI 并执行回调。

构造

php
public function __construct($uri, $callback, $same = null, $group = null)
参数类型说明
$uristring共用 URI
$callbackcallable回调,注入 RouteSame 实例
$sameRouteSame|null所属同 URI 注册器
$groupRouteGroup|null所属组

DSL 方法

同 URI DSL 只收 controller(URI 已由构造给定),创建子路由并自动 Routes::push

php
function get($controller = null): RouteRegister
function post($controller = null): RouteRegister
function put($controller = null): RouteRegister
function patch($controller = null): RouteRegister
function delete($controller = null): RouteRegister
function head($controller = null): RouteRegister
function options($controller = null): RouteRegister
function any($controller = null): RouteRegister

参数

参数类型说明
$controllerstring|array|\Closure|null控制器

示例

php
Route::same("links/{id}", function ($rs) {
    $rs->get(ShowLinkController::class);      // GET    /links/{id}
    $rs->put(UpdateLinkController::class);    // PUT    /links/{id}
    $rs->delete(RemoveLinkController::class); // DELETE /links/{id}
});

嵌套

php
function same($uri = null, $callback = null): RouteSame|mixed
function group($prefix = null, $callback = null): RouteGroup|mixed
function fallback($controller = null): RouteRegister

无参调用读取所属父级,传值创建子级。

示例

php
Route::same("links/{id}", function ($rs) {
    $rs->get(ShowLinkController::class);

    // 嵌套 same
    $rs->same("meta", function ($rs2) {
        $rs2->get(ShowMetaController::class);  // /links/{id}/meta (GET)
    });

    // 嵌套组
    $rs->group("admin", function ($g) {
        $g->get("edit", EditController::class); // /links/{id}/admin/edit (GET)
    });

    // 兜底
    $rs->fallback(NotFoundController::class);
});

继承自 RouteRegister

所有 RouteRegister 的读写一体 setter 和链式方法均可使用:

  • name() / prefix() / domain() / fallback()
  • controller() / method() / uri() / parameters()
  • middleware() / where() / whereNumber() / whereAlpha() / ...
  • append() / params() / resolve()