Class yii\rest\Serializer

继承yii\rest\Serializer » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/rest/Serializer.php

Serializer 将字段对象和集合转换为数组表示形式.

REST 控制器主要使用 Serializer 将不用的对象转换为数组表示形式, 以便可以通过响应格式化程序将它们进一步转换为不同的格式, 例如 JSON, XML.

默认实现将资源作为 yii\base\Model 对象处理, 将集合作为实现 yii\data\DataProviderInterface 的对象处理. 你可以重写 serialize() 以处理更多类型.

公共属性

隐藏继承的属性

属性类型描述定义在
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$collectionEnvelope string 用于返回集合中资源对象的信封名称(eg. yii\rest\Serializer
$currentPageHeader string HTTP 标头的名称, 其中包含有关当前页码(从1开始)的信息. yii\rest\Serializer
$expandParam string 查询参数的名称, 除了 $fieldsParam 中为资源对象列出的字段外, 还包含有关应返回哪些字段的信息. yii\rest\Serializer
$fieldsParam string 查询参数的名称, 其中包含有关 yii\base\Model 对象应返回哪些字段的信息. yii\rest\Serializer
$linksEnvelope string 返回链接对象的信封的名称(eg. yii\rest\Serializer
$metaEnvelope string 用于返回分页对象的信封的名称(eg. yii\rest\Serializer
$pageCountHeader string HTTP 标头的名称, 其中包含有关数据页面总数的信息. yii\rest\Serializer
$perPageHeader string HTTP 标头的名称, 其中包含有关每个页面中数据项数量的信息. yii\rest\Serializer
$preserveKeys boolean 序列化收集数据时是否保留数据键. yii\rest\Serializer
$request yii\web\Request 当前请求. yii\rest\Serializer
$response yii\web\Response 要发送的回复. yii\rest\Serializer
$totalCountHeader string HTTP 标头的名称, 其中包含有关数据项总数的信息. yii\rest\Serializer

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\BaseObject
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化对象. yii\rest\Serializer
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
serialize() 将给定数据序列化为可以轻松转换为其它格式的格式. yii\rest\Serializer
trigger() 触发事件. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述定义在
addPaginationHeaders() 将有关分页的 HTTP 标头添加到响应种. yii\rest\Serializer
getRequestedFields() yii\rest\Serializer
serializeDataProvider() 序列化数据提供者. yii\rest\Serializer
serializeModel() 序列化模型对象. yii\rest\Serializer
serializeModelErrors() 序列化模型种的验证错误. yii\rest\Serializer
serializeModels() 序列化一组模型. yii\rest\Serializer
serializePagination() 将分页序列化为数组. yii\rest\Serializer

属性详情

$collectionEnvelope public 属性

用于返回集合中资源对象的信封名称(eg. items). 在服务资源收集时使用. 设置此选项并启用分页后, 序列化程序将以以下格式返回集合:

[
    'items' => [...],  // 假设 collectionEnvelope 是 "items"
    '_links' => {  // 由 Pagination::getLinks() 返回的分页链接
        'self' => '...',
        'next' => '...',
        'last' => '...',
    },
    '_meta' => {  // 由 Pagination::toArray() 返回的元信息
        'totalCount' => 100,
        'pageCount' => 5,
        'currentPage' => 1,
        'perPage' => 20,
    },
]

如果未设置此属性, 则将不使用信封直接返回资源数组. 可以从响应 HTTP 标头访问_links_meta中所示的分页信息.

$currentPageHeader public 属性

HTTP 标头的名称, 其中包含有关当前页码(从1开始)的信息. 在通过分页服务资源收集时使用.

public string $currentPageHeader 'X-Pagination-Current-Page'
$expandParam public 属性

查询参数的名称, 除了 $fieldsParam 中为资源对象列出的字段外, 还包含有关应返回哪些字段的信息.

public string $expandParam 'expand'
$fieldsParam public 属性

查询参数的名称, 其中包含有关 yii\base\Model 对象应返回哪些字段的信息. 如果未提供该参数或为空, 则将返回 yii\base\Model::fields() 定义的默认字段集.

public string $fieldsParam 'fields'
$linksEnvelope public 属性 (可用自版本: 2.0.4)

返回链接对象的信封的名称(eg. _links). 仅当设置了collectionEnvelope时, 它才有效.

public string $linksEnvelope '_links'
$metaEnvelope public 属性 (可用自版本: 2.0.4)

用于返回分页对象的信封的名称(eg. _meta). 仅当设置了collectionEnvelope时, 它才有效.

public string $metaEnvelope '_meta'
$pageCountHeader public 属性

HTTP 标头的名称, 其中包含有关数据页面总数的信息. 在通过分页服务资源收集时使用.

public string $pageCountHeader 'X-Pagination-Page-Count'
$perPageHeader public 属性

HTTP 标头的名称, 其中包含有关每个页面中数据项数量的信息. 在通过分页服务资源收集时使用.

public string $perPageHeader 'X-Pagination-Per-Page'
$preserveKeys public 属性 (可用自版本: 2.0.10)

序列化收集数据时是否保留数据键. 将其设置为true以允许将集合序列化为 JSON 对象, 其中数组键用于索引模型对象. 默认值是将所有集合序列化为数组, 而不管如何为数组建立索引.

参见 serializeDataProvider().

public boolean $preserveKeys false
$request public 属性

当前请求. 如果未设置, 将使用request应用程序组件.

public yii\web\Request $request null
$response public 属性

要发送的回复. 如果未设置, 将使用response应用程序组件.

$totalCountHeader public 属性

HTTP 标头的名称, 其中包含有关数据项总数的信息. 在通过分页服务资源收集时使用.

public string $totalCountHeader 'X-Pagination-Total-Count'

方法详情

addPaginationHeaders() protected 方法

将有关分页的 HTTP 标头添加到响应种.

protected void addPaginationHeaders ( $pagination )
$pagination yii\data\Pagination
getRequestedFields() protected 方法
protected array getRequestedFields ( )
return array

所请求字段的名称. 第一个元素是表示请求的默认字段列表的数组, 而第二个元素是除默认字段之外的请求的其它字段的数组.

init() public 方法

初始化对象.

在使用给定的配置初始化对象之后, 在构造函数的末尾调用此方法.

public void init ( )
serialize() public 方法

将给定数据序列化为可以轻松转换为其它格式的格式.

此方法主要将识别类型的对象转换为数组表示形式. 它不会对未知对象类型或非对象数据进行转换. 默认实现将处理 yii\base\Model, yii\data\DataProviderInterface\JsonSerializable. 你可以重写此方法以支持更多的对象类型.

public mixed serialize ( $data )
$data mixed

要序列化的数据.

return mixed

转换后的数据.

serializeDataProvider() protected 方法

序列化数据提供者.

protected array serializeDataProvider ( $dataProvider )
$dataProvider yii\data\DataProviderInterface
return array

数据提供者的数组表示形式.

serializeModel() protected 方法

序列化模型对象.

protected array serializeModel ( $model )
$model yii\base\Arrayable
return array

模型的数组表示.

serializeModelErrors() protected 方法

序列化模型种的验证错误.

protected array serializeModelErrors ( $model )
$model yii\base\Model
return array

错误的数组表示形式.

serializeModels() protected 方法

序列化一组模型.

protected array serializeModels ( array $models )
$models array
return array

模型的数组表示.

serializePagination() protected 方法

将分页序列化为数组.

参见 addPaginationHeaders().

protected array serializePagination ( $pagination )
$pagination yii\data\Pagination
return array

分页的数组表示形式.