[9.x] Fix support of nullable type for AsArrayObject/AsCollection #41797
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previous fix #36526 of these 2 classes not covered the behavior of php
json_encode
/json_decode
functions when casting null.If you have tried to set
AsArrayObject
attribute value to null (or had it by default),json_encode
processed it as sting"null"
which is correct from the point of JSON, and it was stored successfully. Nothing wrong here.But next time you tried to access the attribute, the error
ArrayObject::__construct(): Argument #1 ($array) must be of type array, null given
was raised because it was already converted to a string andjson_decode
returnsnull
taking"null"
as an argument, which is not acceptable by ArrayObject.Collection
class casts null to an empty array under the hood, there was no problem on practice, but I consider better to keep the same predictable behavior ofget
methods for both cast attribute classes.This PR also fix potential issues with
json_encode
/json_decode
casting boolean values.