0 关注者

接口 yii\base\Arrayable

实现类yii\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() 返回一个额外的字段列表,这些字段可以由 toArray() 返回,除了在 fields() 中列出的字段。 yii\base\Arrayable
fields() 返回一个字段列表,这些字段应该在默认情况下由 toArray() 返回,前提是未指定任何特定字段。 yii\base\Arrayable
toArray() 将对象转换为数组。 yii\base\Arrayable

方法详情

隐藏继承的方法

extraFields() 公共抽象方法

返回一个额外的字段列表,这些字段可以由 toArray() 返回,除了在 fields() 中列出的字段。

此方法类似于 fields(),不同之处在于此方法声明的字段列表不会被 toArray() 默认返回。只有当列表中的字段被明确请求时,它才会包含在 toArray() 的结果中。

另请参阅

public abstract array extraFields ( )
返回值 array

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

                public function extraFields();

            
fields() 公共抽象方法

返回一个字段列表,这些字段应该在默认情况下由 toArray() 返回,前提是未指定任何特定字段。

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

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

function ($model, $field) {
    // return field value
}

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

  • 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 ( )
返回值 array

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

                public function fields();

            
toArray() 公共抽象方法

将对象转换为数组。

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);