拦截器
拦截器是Saber的一个非常强大的特性, 它可以让你非常方便地处理各种事情, 比如打印dev日志:
SaberGM::get('http://twosee.cn/', [
'before' => function (Saber\Request $request) {
$uri = $request->getUri();
echo "log: request $uri now...\n";
},
'after' => function (Saber\Response $response) {
if ($response->success) {
echo "log: success!\n";
} else {
echo "log: failed\n";
}
echo "use {$response->time}s";
}
]);
// log: request http://twosee.cn/ now...
// log: success!
// use 0.52036285400391s
甚至连异常自定义处理函数
,会话
都是通过拦截器来实现的.
拦截器可以有多个, 会依照注册顺序执行, 并且你可以为拦截器命名, 只需要使用数组包裹并指定key值, 如果你要删除这个拦截器, 给它覆盖一个null值即可.
[
'after' => [
'interceptor_new' => function(){},
'interceptor_old' => null
]
]
拦截器可以使用四种方式注册(4种PHP回调函数):
callable: function(){}
string: 'function_name'
string: 'ClassName::method_name'
array: [$object, 'method_name']