关于 Transformer 的全局配置?
教程做到这里除了 passport 章节算是全部结束了,全程做下来有一点疑问,就是关于 Transformer 的。
在控制器响应请求一般使用
return $this->response->item($object, Transformer)->setStatusCode($code);
or
return $this->response->collection($objec, new Transformer)->setStatusCode($code);
这里第二个参数,也就是 Transformer
实例是必传的,但是在 Dingo\Api\Transformer\Factory
中又可以使用如下代码进行绑定:
/**
* Register a transformer binding resolver for a class.
*
* @param $class
* @param $resolver
* @param array $parameters
* @param \Closure|null $after
*
* @return \Dingo\Api\Transformer\Binding
*/
public function register($class, $resolver, array $parameters = [], Closure $after = null)
{
return $this->bindings[$class] = $this->createBinding($resolver, $parameters, $after);
}
我们的定义了 Transformer
之后在所有的返回中都会应用,其实完全可以省略这第二个参数的,但偏偏不行。
还有如下一些方法,如果不进行全局的绑定,确用不上Transformer
。
$this->response->created()
$this->response->accepted()
没去看源码,不知道是不是有两全的方法。
推荐文章: