在传统框架中,每个请求都会实例化一次控制器,所以很多开发者__construct()
方法中做一些请求前的准备工作。
而webman由于控制器常驻内存,无法在__construct()
里做这些工作,不过webman提供了更好的解决方案beforeAction()
afterAction()
,它不仅让开发者可以介入到请求前的流程中,而且还可以介入到请求后的处理流程中。
composer require webman/action-hook
注意
插件需要webman>=1.2,如果你的版本低于1.2可以参考这里手动配置action-hook
beforeAction
说明:
Request
对象给beforeAction
,开发者可以从中获得用户输入beforeAction
里返回一个Response
对象,比如return redirect('/user/login');
afterAction
说明:
Request
对象以及Response
对象给afterAction
,开发者可以从中获得用户输入以及控制器执行后返回的响应结果$response->rawBody()
获得响应内容$response->getHeader()
获得响应的header头$response->getStatusCode()
获得响应的http状态码$response->withBody()
$response->header()
$response->withStatus()
串改响应,也可以创建并返回一个新的Response
对象替代原响应提示
你可以创建一个控制器基类,这个基类实现beforeAction()
afterAction()
方法。其他控制器继承这个基类,这样就不必每个控制器都实现一遍beforeAction()`afterAction()
方法。