路由配置

路由配置文件位于应用目录下的 config/router.ini

yml 格式配置文件模板

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
test-rooter:
    prefix :
        path : '/p'
        controller : UserAuth@checkLogin
    path : /foo-{id}
    controller : MyController@test
    method : GET
    require:
        id : '0-9 :{9-12}'
        subdomain : www
    options :
    schemes :
    host : {subdomain}.host.com

ini 格式配置文件模板

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[test-rooter]
prefix.path =
prefix.controller = UserAuth@checkLogin
path = /test-{id}
controller = MyController@test
method = GET
require.id = [0-9]{9-12}
require.subdomain = www
options =
schemes =
host = {subdomain}.host.com

参数解释

配置名 类型 必须 描述
prefix array 前缀,分组,字段与路由配置相同
path string URL路径
controller string 控制器PHP类名字
method string 如未设置,将使用**GET**,除 HTTP 的 method 外还支持 CLI
require array

参数列表,key 为参数名,值为匹配表达式, 这里的参数使用在 pathhost

注解

模式匹配表达式可能需要使用引号包括

schemes string 请求协议
host string 请求的主机名
before string 控制器运行前调用本类
after string 控制器执行完调用本类

路由配置中类名字规则:

  1. 所有PHP类名字不包括应用的名字空间和本组件类型名字空间
  2. controller 定义的类的名字空间由主配置文件 app.ctl_ns 控制,默认为 Controller
  3. before,**after** ,**prefix.controller** 定义的类名字空间由主配置文件 app.middleware_ns 控制,默认为``Middleware``
  4. 调用方法模板: 子名字空间.类名@方法名
  5. 调用静态方法模板: 子名字空间.类名:方法名
  6. 调用函数模板: @子名字空间.函数名,函数调用不支持命名空间,注意函数无法自动加载

类名转换规则表:

配置名 实际调用
controller MyController new AppNS\Controller\MyController
controller MyController@foo (new AppNS\Controller\MyController)->foo()
controller MyController:foo AppNS\Controller\MyController::foo()
controller @foo AppNS\Controller\foo()
controller User.MyController@foo (new AppNS\Controller\User\MyController)->foo()
controller @User.foo AppNS\Controller\User\foo()
before CheckAuth@check (new AppNS\Middleware\CheckAuth)->check()

注解

上表类命名空间取了默认值

注解

before,**after** ,**prefix.controller** 除名字空间外,其他于 controller 相同

注解

prefix.controller 是指该路由配置的 prefix 的子项 controller