Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

check for ArrayAccess instead of ArrayObject #197

Closed
wants to merge 1 commit into from

Conversation

reinfi
Copy link

@reinfi reinfi commented Dec 28, 2022

Solves #175. Added a test to be sure that only a collection with ArrayAccess works.

cweiske added a commit that referenced this pull request Jan 11, 2023
@cweiske
Copy link
Owner

cweiske commented Jan 11, 2023

Thank you - merged.

@cweiske cweiske closed this Jan 11, 2023
cweiske pushed a commit that referenced this pull request May 17, 2024
Only handle objects as array when they implement both
ArrayAccess and Traversable.

BC break!

----

Originally, JsonMapper handled objects extending ArrayObject as arrays.

Extending own collection classes from ArrayObject is not always feasible
(issue #175, #175),
so a way was sought to rely on interfaces only.

Patch #197 (#197) changed
the implementation to check for the ArrayAccess interface instead of
ArrayObject.

This unfortunately breaks
objects-that-allow-array-access-but-are-not-traversable-arrays
(issue #224, #224),
for example when you allow array access to properties stored
in some internal variable.

The correct solution is to check that the object implements
ArrayAcces *and* Traversable - then we can be sure the object
is intended to be used with e.g. foreach().

Resolves: #224
cweiske pushed a commit that referenced this pull request May 17, 2024
Only handle objects as array when they implement both
ArrayAccess and Traversable.

BC break!

----

Originally, JsonMapper handled objects extending ArrayObject as arrays.

Extending own collection classes from ArrayObject is not always feasible
(issue #175, #175),
so a way was sought to rely on interfaces only.

Patch #197 (#197) changed
the implementation to check for the ArrayAccess interface instead of
ArrayObject.

This unfortunately breaks
objects-that-allow-array-access-but-are-not-traversable-arrays
(issue #224, #224),
for example when you allow array access to properties stored
in some internal variable.

The correct solution is to check that the object implements
ArrayAcces *and* Traversable - then we can be sure the object
is intended to be used with e.g. foreach().

Resolves: #224
cweiske pushed a commit that referenced this pull request Sep 8, 2024
Only handle objects as array when they implement both
ArrayAccess and Traversable.

BC break!

----

Originally, JsonMapper handled objects extending ArrayObject as arrays.

Extending own collection classes from ArrayObject is not always feasible
(issue #175, #175),
so a way was sought to rely on interfaces only.

Patch #197 (#197) changed
the implementation to check for the ArrayAccess interface instead of
ArrayObject.

This unfortunately breaks
objects-that-allow-array-access-but-are-not-traversable-arrays
(issue #224, #224),
for example when you allow array access to properties stored
in some internal variable.

The correct solution is to check that the object implements
ArrayAcces *and* Traversable - then we can be sure the object
is intended to be used with e.g. foreach().

Resolves: #224
DannyRodriguezFSWD pushed a commit to DannyRodriguezFSWD/b-josnmapper that referenced this pull request Dec 22, 2024
DannyRodriguezFSWD pushed a commit to DannyRodriguezFSWD/b-josnmapper that referenced this pull request Dec 22, 2024
Only handle objects as array when they implement both
ArrayAccess and Traversable.

BC break!

----

Originally, JsonMapper handled objects extending ArrayObject as arrays.

Extending own collection classes from ArrayObject is not always feasible
(issue #175, cweiske/jsonmapper#175),
so a way was sought to rely on interfaces only.

Patch #197 (cweiske/jsonmapper#197) changed
the implementation to check for the ArrayAccess interface instead of
ArrayObject.

This unfortunately breaks
objects-that-allow-array-access-but-are-not-traversable-arrays
(issue #224, cweiske/jsonmapper#224),
for example when you allow array access to properties stored
in some internal variable.

The correct solution is to check that the object implements
ArrayAcces *and* Traversable - then we can be sure the object
is intended to be used with e.g. foreach().

Resolves: cweiske/jsonmapper#224
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants