一句话介绍

Fractal output complex, flexible, ajax/restful data structures

Fractal 为复杂的数据输出提供了样式和转化层。

最简单的例子

正常情况下,下面的代码是分散在项目的各处的

几个概念

Resources 资源

Resource 是一个对象,代表了数据,并且知道数据对应的“转化器”是什么。
有两种 Resources
1. League\Fractal\Resource\Item – 单个资源
2. League\Fractal\Resource\Collection – 资源的集合
它们的构造函数接受实际操作的“数据”作为第一个参数,接受“转化器”作为第二个参数。

Serializers 序列化器

一个序列化器会以某种方式组织你的转化过的数据。Fractal 提供了 DataArraySerializerArraySerializerJsonApiSerializer,也可以自己来写。
比较常用的是 DataArraySerializer,但是它会给数据增加一个 data 的命名空间,如果不喜欢,可以使用其他类型,或者自己实现一个。

Transformers 转化器

这个是最常用的一个内容。

转化器类

必须继承 League\Fractal\TransformerAbstract,并且包含一个 transform() 方法。这个方法相当于转化的格式,具体可以参考上面例子里面的回调函数。

Including Data 包含数据

比如我们的 Book 模型是有一些关系的,比如说 作者 Author,出版社 Press。
在模型里我们定义好相关的关系之后,在转化器类里面可以这样来包含相关的(转化好的)数据。

里面有两种包含,默认的总是会自动获取对应关系的数据,比如 user 的返回数据里面会给每一个 user 带上对应的 user_info。
可用的包含则必须要调用 parseIncludes 方法:

否则不会生效。

Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注