[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_decodefunctions when casting null.If you have tried to set
AsArrayObjectattribute value to null (or had it by default),json_encodeprocessed 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 givenwas raised because it was already converted to a string andjson_decodereturnsnulltaking"null"as an argument, which is not acceptable by ArrayObject.Collectionclass 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 ofgetmethods for both cast attribute classes.This PR also fix potential issues with
json_encode/json_decodecasting boolean values.