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() 傳回除了 fields() 中列出的欄位之外,可以由 toArray() 傳回的額外欄位列表。 yii\base\Arrayable
fields() 傳回當沒有指定特定欄位時,預設應由 toArray() 傳回的欄位列表。 yii\base\Arrayable
toArray() 將物件轉換成陣列。 yii\base\Arrayable

方法詳情

隱藏繼承的方法

extraFields() public abstract method

傳回除了 fields() 中列出的欄位之外,可以由 toArray() 傳回的額外欄位列表。

這個方法與 fields() 類似,不同之處在於,此方法宣告的欄位列表預設不會由 toArray() 傳回。只有當明確請求列表中的欄位時,它才會包含在 toArray() 的結果中。

參見

public abstract array extraFields ( )
傳回 array

可擴展的欄位名稱或欄位定義的列表。請參考 fields() 關於傳回值的格式。

                public function extraFields();

            
fields() public abstract method

傳回當沒有指定特定欄位時,預設應由 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 method

將物件轉換成陣列。

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