thinkphp分发请求
分发请求
在完成了URL检测和路由检测之后,路由器会分发请求到对应的路由地址,这也是应用请求的生命周期中最重要的一个环节。
在这一步骤中,完成应用的业务逻辑及数据返回。
建议统一使用return
返回数据,而不是echo
输出,如非必要,请不要使用exit
或者die
中断执行。
直接
echo
输出的数据将无法进行自动转换响应输出的便利。
下面是系统支持的分发请求机制,可以根据情况选择:
模块/控制器/操作
这是默认的分发请求机制,系统会根据URL或者路由地址来判断当前请求的模块、控制器和操作名,并自动调用相应的访问控制器类,执行操作对应的方法。
该机制下面,首先会判断当前模块,并进行模块的初始化操作(和应用的初始化操作类似),模块的配置参数会覆盖应用的尚未生效的配置参数。
支持模块映射、URL参数绑定到方法,以及操作绑定到类等一些功能。
控制器方法
和前一种方式类似,只是无需判断模块、控制器和操作,直接分发请求到一个指定的控制器类的方法,因此没有进行模块的初始化操作。
外部重定向
可以直接分发请求到一个外部的重定向地址,支持指定重定向代码,默认为301重定向。
闭包函数
路由地址定义的时候可以直接采用闭包函数,完成一些相对简单的逻辑操作和输出。
类的方法
除了以上方式外,还支持分发请求到类的方法,包括:
静态方法: 'blog/:id'=>'\org\util\Blog::read'
类的方法:'blog/:id'=>'\app\index\controller\Blog@read'