Skip to content

Route — 静态门面

  • 文件位置: kernel/Foundation/Router/Route.php
  • 命名空间: kernel\Foundation\Router
  • 是否可继承: 否(final 语义,纯静态入口)

路由定义的唯一入口。所有方法返回路由载体对象(RouteRegister / RouteGroup / RouteSame / RouteDomain),供链式设置。

HTTP 方法注册

php
static function get($uri, $controller = null): RouteRegister
static function post($uri, $controller = null): RouteRegister
static function put($uri, $controller = null): RouteRegister
static function patch($uri, $controller = null): RouteRegister
static function delete($uri, $controller = null): RouteRegister
static function head($uri, $controller = null): RouteRegister
static function options($uri, $controller = null): RouteRegister
static function any($uri, $controller = null): RouteRegister  // 任意方法,method="*"

参数

参数类型说明
$uristring路由 URI,如 "users""blog/{id:\d+}"
$controllerstring|array|\Closure|null控制器:类名 / [类,方法] / 闭包,可省略

示例

php
Route::get("users", UserController::class);
Route::post("users", StoreUserController::class);
Route::get("users/{id}", ShowUserController::class)->whereNumber("id");
Route::any("fallback", FallbackController::class);

group($prefix, $callback) — 路由组

php
static function group($prefix, $callback): RouteGroup

参数

参数类型说明
$prefixstring组前缀
$callbackcallable组回调,注入 RouteGroup 实例

示例

php
Route::group("api", function ($g) {
    $g->get("users", UserController::class);     // /api/users
    $g->group("v1", function ($g2) {             // 嵌套组
        $g2->get("users", V1UserController::class); // /api/v1/users
    });
});

same($uri, $callback) — 同 URI 注册器

php
static function same($uri, $callback): RouteSame

参数

参数类型说明
$uristring共用 URI
$callbackcallable回调,注入 RouteSame 实例

示例

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

domain($domain, $callback) — 域名组

php
static function domain($domain, $callback): RouteDomain

参数

参数类型说明
$domainstring生效域名(如 "api.example.com",不含协议/端口)
$callbackcallable回调,注入 RouteDomain 实例

示例

php
Route::domain("api.example.com", function ($d) {
    $d->get("users", ApiUserController::class);  // 仅 api.example.com
});

fallback($controller, $domain) — 兜底路由

php
static function fallback($controller = null, $domain = null): RouteRegister

参数

参数类型默认说明
$controllerstring|array|\Closure|nullnull兜底控制器/闭包
$domainstring|nullnull生效域名(null = 全局兜底)

示例

php
Route::fallback(NotFoundController::class);
Route::fallback(ApiNotFoundController::class, "api.example.com");

pattern($name, $regex) — 全局参数约束

php
static function pattern($name, $regex = null): void

参数

参数类型说明
$namestring|array参数名或 参数名=>正则 映射
$regexstring|null$name 为字符串时必填的正则

示例

php
Route::pattern("id", "[0-9]+");
Route::pattern(["id" => "[0-9]+", "slug" => "[a-z-]+"]);

url($name, $params, $domain, $https) — 反向生成 URL

php
static function url($name, $params = [], $domain = null, $https = false): string

参数

参数类型默认说明
$namestring必填路由名
$paramsarray[]路由参数(参数名 => 值)
$domainstring|nullnull域名(非 null 时生成绝对 URL)
$httpsboolfalse是否 HTTPS

返回值

  • string:相对路径或绝对 URL
  • 路由名不存在抛 InvalidArgumentException
  • 必选参数缺失抛 InvalidArgumentException

示例

php
Route::get("users/{id}/posts", PostController::class)->name("user.posts");

Route::url("user.posts", ["id" => 42]);
// "users/42/posts"

Route::url("user.posts", ["id" => 42, "page" => 2]);
// "users/42/posts?page=2"

Route::url("user.posts", ["id" => 42], "example.com");
// "http://example.com/users/42/posts"

Route::url("user.posts", ["id" => 42], "example.com", true);
// "https://example.com/users/42/posts"

redirect($name, $params) — 重定向响应

php
static function redirect($name, $params = []): Result

参数

参数类型说明
$namestring路由名
$paramsarray路由参数

返回值

  • Result:302 重定向响应(含 Location 头)

示例

php
return Route::redirect("login");
return Route::redirect("user.posts", ["id" => 42]);