mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-02 13:02:24 +08:00
Fix #18435: Change the check order whether an object is an implementation of Arrayable or JsonSerializable in \yii\base\ArrayableTrait::toArray() and \yii\rest\Serializer::serialize()
This commit is contained in:
@ -16,6 +16,7 @@ Yii Framework 2 Change Log
|
||||
- Bug #18426: Fix check for route's leading slash in `yii\widgets\Menu` (stevekr)
|
||||
- Bug #16492: Fix eager loading Active Record relations when relation key is a subject to a type-casting behavior (bizley)
|
||||
- Bug #18435: Fix ensuring Active Record relation links' keys to be strings (bizley)
|
||||
- Bug #18435: Change the check order whether an object is an implementation of `Arrayable` or `JsonSerializable` in `\yii\base\ArrayableTrait::toArray()` and `\yii\rest\Serializer::serialize()` (spell6inder)
|
||||
|
||||
|
||||
2.0.39.3 November 23, 2020
|
||||
|
||||
@ -128,17 +128,17 @@ trait ArrayableTrait
|
||||
if ($recursive) {
|
||||
$nestedFields = $this->extractFieldsFor($fields, $field);
|
||||
$nestedExpand = $this->extractFieldsFor($expand, $field);
|
||||
if ($attribute instanceof \JsonSerializable) {
|
||||
$attribute = $attribute->jsonSerialize();
|
||||
} elseif ($attribute instanceof Arrayable) {
|
||||
if ($attribute instanceof Arrayable) {
|
||||
$attribute = $attribute->toArray($nestedFields, $nestedExpand);
|
||||
} elseif ($attribute instanceof \JsonSerializable) {
|
||||
$attribute = $attribute->jsonSerialize();
|
||||
} elseif (is_array($attribute)) {
|
||||
$attribute = array_map(
|
||||
function ($item) use ($nestedFields, $nestedExpand) {
|
||||
if ($item instanceof \JsonSerializable) {
|
||||
return $item->jsonSerialize();
|
||||
} elseif ($item instanceof Arrayable) {
|
||||
if ($item instanceof Arrayable) {
|
||||
return $item->toArray($nestedFields, $nestedExpand);
|
||||
} elseif ($item instanceof \JsonSerializable) {
|
||||
return $item->jsonSerialize();
|
||||
}
|
||||
return $item;
|
||||
},
|
||||
|
||||
@ -146,10 +146,10 @@ class Serializer extends Component
|
||||
{
|
||||
if ($data instanceof Model && $data->hasErrors()) {
|
||||
return $this->serializeModelErrors($data);
|
||||
} elseif ($data instanceof \JsonSerializable) {
|
||||
return $data->jsonSerialize();
|
||||
} elseif ($data instanceof Arrayable) {
|
||||
return $this->serializeModel($data);
|
||||
} elseif ($data instanceof \JsonSerializable) {
|
||||
return $data->jsonSerialize();
|
||||
} elseif ($data instanceof DataProviderInterface) {
|
||||
return $this->serializeDataProvider($data);
|
||||
} elseif (is_array($data)) {
|
||||
|
||||
Reference in New Issue
Block a user