接口 yii\base\Arrayable
Arrayable 是一个接口,应该由希望支持自定义实例表示的类实现。
例如,如果一个类实现了 Arrayable,通过调用 toArray(),该类的实例可以被转换为一个数组(包括所有嵌入的的对象),然后可以轻松地进一步转换为其他格式,例如 JSON、XML。
方法 fields() 和 extraFields() 允许实现类自定义其数据的格式和哪些数据应该被格式化并放入 toArray() 的结果中。
公共方法
方法 | 描述 | 定义于 |
---|---|---|
extraFields() | 返回一个额外的字段列表,这些字段可以由 toArray() 返回,除了在 fields() 中列出的字段。 | yii\base\Arrayable |
fields() | 返回一个字段列表,这些字段应该在默认情况下由 toArray() 返回,前提是未指定任何特定字段。 | yii\base\Arrayable |
toArray() | 将对象转换为数组。 | yii\base\Arrayable |
方法详情
返回一个额外的字段列表,这些字段可以由 toArray() 返回,除了在 fields() 中列出的字段。
此方法类似于 fields(),不同之处在于此方法声明的字段列表不会被 toArray() 默认返回。只有当列表中的字段被明确请求时,它才会包含在 toArray() 的结果中。
另请参阅
public abstract array extraFields ( ) | ||
返回值 | array |
可扩展字段名称或字段定义的列表。有关返回值格式,请参阅 fields()。 |
---|
public function extraFields();
返回一个字段列表,这些字段应该在默认情况下由 toArray() 返回,前提是未指定任何特定字段。
字段是在 toArray() 返回的数组中的命名元素。
此方法应该返回一个字段名称或字段定义的数组。如果是前者,字段名称将被视为对象的属性名称,其值将被用作字段值。如果是后者,数组键应该是字段名称,而数组值应该是对应的字段定义,它可以是对象的属性名称,也可以是一个返回对应字段值的 PHP 可调用函数。可调用函数的签名应该是
function ($model, $field) {
// return field value
}
例如,以下代码声明了四个字段
email
:字段名称与属性名称email
相同;firstName
和lastName
:字段名称为firstName
和lastName
,它们的值分别从first_name
和last_name
属性获取;fullName
:字段名称为fullName
。它的值通过连接first_name
和last_name
获得。
return [
'email',
'firstName' => 'first_name',
'lastName' => 'last_name',
'fullName' => function ($model) {
return $model->first_name . ' ' . $model->last_name;
},
];
另请参阅 toArray()。
public abstract array fields ( ) | ||
返回值 | array |
字段名称或字段定义的列表。 |
---|
public function fields();
将对象转换为数组。
public abstract array toArray ( array $fields = [], array $expand = [], $recursive = true ) | ||
$fields | array |
输出数组应该包含的字段。在 fields() 中未指定的字段将被忽略。如果此参数为空,则将返回 fields() 中指定的所有字段。 |
$expand | array |
输出数组应该包含的额外字段。在 extraFields() 中未指定的字段将被忽略。如果此参数为空,则不会返回任何额外字段。 |
$recursive | boolean |
是否递归地返回嵌入对象的数组表示形式。 |
返回值 | array |
对象的数组表示形式 |
---|
public function toArray(array $fields = [], array $expand = [], $recursive = true);
注册 或 登录 以评论。