Interface yii\base\Arrayable

Implemented byyii\base\DynamicModel, yii\base\Model, yii\data\ActiveDataFilter, yii\data\DataFilter, yii\db\ActiveRecord, yii\db\BaseActiveRecord
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/base/Arrayable.php

Arrayable 是要支持其实例的可自定义表示形式的类应实现的接口.

例如, 如果某个类实现 Arrayable, 则可以通过调用 toArray() 将该类的实例转换为数组(包括其所有的嵌入式对象), 然后可以将其轻松的转换为其它格式, 例如 JSON, XML.

方法 fields()extraFields() 允许实现类自定义应如何格式化其数据, 以及将哪些数据放入 toArray() 的结果中.

公共方法

隐藏继承的方法

方法描述定义在
extraFields() 除了 fields() 中列出的字段外, 还返回 toArray() 可以返回的其它字段的列表. yii\base\Arrayable
fields() 返回未指定任何特定字段时, 默认应由 toArray() 返回的字段列表. yii\base\Arrayable
toArray() 将对象转换为数组. yii\base\Arrayable

方法详情

extraFields() public abstract 方法

除了 fields() 中列出的字段外, 还返回 toArray() 可以返回的其它字段的列表.

此方法类似于 fields(), 但默认情况下 toArray() 不返回此方法声明的字段列表. 仅当明确请求列表中的字段时, 该字段才会包含在 toArray() 的结果中.

参见:

public abstract array extraFields ( )
return array

可扩展字段名称或字段定义的列表. 返回值的格式请参阅 fields().

fields() public abstract 方法

返回未指定任何特定字段时, 默认应由 toArray() 返回的字段列表.

字段是 toArray() 返回数组中的已命名元素.

此方法应返回字段名称或字段定义的数组. 如果是前者, 则字段名称将被视为对象属性名称, 其值将被用作字段值. 如果是后者, 则数组键应为字段名称, 而数组值应为相应的字段定义, 该定义可以是对象属性名称, 也可以是返回相应字段值的 PHP 可调用字段. 可调用的签名应该是:

function ($model, $field) {
    // 返回字段值
}

例如, 以下代码声明了四个字段:

  • email: 字段名称与属性名称email相同;
  • firstNamelastName: 字段名称是firstNamelastName, 它们的值是从first_namelast_name属性获得的;
  • fullName: 字段名称是fullName. 它的值是通过将first_namelast_name连接起来而获得的.
return [
    'email',
    'firstName' => 'first_name',
    'lastName' => 'last_name',
    'fullName' => function ($model) {
        return $model->first_name . ' ' . $model->last_name;
    },
];

参见 toArray().

public abstract array fields ( )
return array

字段名称或字段定义的列表.

toArray() public abstract 方法

将对象转换为数组.

public abstract array toArray ( array $fields = [], array $expand = [], $recursive true )
$fields array

输出数组应包含的字段. 未在 fields() 中指定的字段将被忽略. 如果此参数为空, 则将返回 fields() 中指定的所有字段.

$expand array

输出数组应包含的其它字段. 未在 extraFields() 中指定的字段将被忽略. 如果此参数为空, 则不会返回任何额外的字段.

$recursive boolean

是否递归返回嵌入对象的数组表示形式.

return array

对象的数组表示形式.