Трейт yii\base\ArrayableTrait
Трейт ArrayableTrait предоставляет общее реализацию интерфейса yii\base\Arrayable.
ArrayableTrait реализует метод toArray() с учетом определений полей, указанных в методах fields() и extraFields().
Публичные методы
| Метод | Описание | Определен в |
|---|---|---|
| extraFields() | Возвращает список полей, которые могут быть дополнительно расширены и возвращены методом toArray(). | yii\base\ArrayableTrait |
| fields() | Возвращает список полей, которые должны возвращаться по умолчанию методом toArray(), когда не указаны конкретные поля. | yii\base\ArrayableTrait |
| toArray() | Преобразует модель в массив. | yii\base\ArrayableTrait |
Защищенные методы
| Метод | Описание | Определен в |
|---|---|---|
| resolveFields() | Определяет, какие поля могут быть возвращены методом toArray(). | yii\base\ArrayableTrait |
Подробное описание методов
extraFields() общедоступный метод
Возвращает список полей, которые можно дополнительно расширить и вернуть методом toArray().
Этот метод похож на fields(), за исключением того, что список полей, возвращаемый этим методом, по умолчанию не возвращается методом toArray(). Только когда имена полей для расширения явно указаны при вызове toArray(), их значения будут экспортированы.
По умолчанию возвращает пустой массив.
Вы можете переопределить этот метод, чтобы вернуть список расширяемых полей на основе некоторой контекстной информации (например, текущего пользователя приложения).
См. также:
| общедоступный массив extraFields ( ) | ||
|---|---|---|
| return | массив |
Список имён расширяемых полей или определений полей. Обратитесь к fields() за формой возвращаемого значения. |
fields() общедоступный метод
Возвращает список полей, которые по умолчанию должны возвращаться методом 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 () {
return $this->first_name . ' ' . $this->last_name;
},
];
В этом методе вы также можете возвращать разные списки полей на основе некоторой контекстной информации. Например, в зависимости от привилегий текущего пользователя приложения, вы можете возвращать разные наборы видимых полей или отфильтровывать некоторые поля.
По умолчанию этот метод возвращает значения public свойств объекта, индексированных их собственными именами.
См. также toArray().
| общедоступный массив fields ( ) | ||
|---|---|---|
| return | массив |
Список имён полей или определений полей. |
resolveFields() защищённый метод
Определяет, какие поля могут быть возвращены методом toArray().
Этот метод проверит запрошенные поля по отношению к полям, объявленным в fields() и extraFields(), чтобы определить, какие поля могут быть возвращены.
| защищённый массив resolveFields ( массив $fields, массив $expand ) | ||
|---|---|---|
| $fields | массив |
Запрашиваемые поля для экспорта. |
| $expand | массив |
Дополнительные поля, запрошенные для экспорта. |
| return | массив |
Список полей, подлежащих экспорту. Ключи массива — имена полей, а значения — соответствующие имена свойств объекта или PHP-выражения, возвращающие значения полей. |
toArray() общедоступный метод
Преобразует модель в массив.
Этот метод сначала определит, какие поля включать в результирующий массив, вызвав resolveFields(). Затем он преобразует модель в массив с этими полями. Если $recursive равно true, любые вложенные объекты также будут преобразованы в массивы.
Если модель реализует интерфейс yii\web\Linkable, результирующий массив также будет содержать элемент _link, который ссылается на список ссылок, как указано в интерфейсе.
| общедоступный массив toArray ( массив $fields = [], массив $expand = [], $recursive = true ) | ||
|---|---|---|
| $fields | массив |
Запрашиваемые поля. Если пустой, будут возвращены все поля, как указано в fields(). |
| $expand | массив |
Дополнительные поля, запрошенные для экспорта. Будут рассмотрены только поля, объявленные в extraFields(). |
| $recursive | булево |
Выполнять ли рекурсивное преобразование вложенных объектов в массивы. |
| return | массив |
Массивная форма представления объекта |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-base-arrayabletrait.html