介面 yii\base\Arrayable
Arrayable 是一個介面,應由希望支援其例項可自訂表示形式的類別實作。
例如,如果一個類別實作了 Arrayable,透過呼叫 toArray(),這個類別的例項可以被轉換成一個陣列(包含所有嵌入的物件),然後可以進一步輕鬆地轉換成其他格式,例如 JSON、XML。
fields() 和 extraFields() 方法允許實作類別自訂它們的哪些資料以及如何格式化這些資料,並將其放入 toArray() 的結果中。
公共方法
方法 | 描述 | 定義於 |
---|---|---|
extraFields() | 傳回除了 fields() 中列出的欄位之外,可以由 toArray() 傳回的額外欄位列表。 | yii\base\Arrayable |
fields() | 傳回當沒有指定特定欄位時,預設應由 toArray() 傳回的欄位列表。 | yii\base\Arrayable |
toArray() | 將物件轉換成陣列。 | yii\base\Arrayable |
方法詳情
傳回除了 fields() 中列出的欄位之外,可以由 toArray() 傳回的額外欄位列表。
這個方法與 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);
註冊 或 登入 以進行評論。