[9.x] Arr::forget() for nested ArrayAccess objects - #42142
Merged
Merged
Conversation
chu121su12
pushed a commit
to chu121su12/framework
that referenced
this pull request
Apr 29, 2022
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Currently, calling
Collection::pull()using a dot notatation key when dealing with nestedArrayAccess::classobjects would result in the correct value being returned but it would not remove the key/value from the objects afterwards.This is because the original call is forwarded to
Arr::pull(), which callsArr::forget(), and in Arr::forget() line 288 the conditional tests only for the value being an array throughis_array.Changing this part of the conditional to
Arr::accessible()makes the method return not only the correct value but also remove the corresponding key when dealing with nestedArrayAccess::classobjects.If I am not mistaken this change should be fully backward compatible.
If there is anything I overlooked please let me know!