-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[Serializer] Fix TraceableSerializer
when called from a callable inside array_map
#60809
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
Conversation
If the TraceableSerializer runs from a callable in an array_map, then the caller looses the file and the line because it was invoked. This causes a hard fail since the required items are not defined. The error is the following: TraceableSerializer.php line 174: Warning: Undefined array key "file". The fix is to get the file and the line from the following array item which always is the caller class.
Hey! I see that this is your first PR. That is great! Welcome! Symfony has a contribution guide which I suggest you to read. In short:
Review the GitHub status checks of your pull request and try to solve the reported issues. If some tests are failing, try to see if they are failing because of this change. When two Symfony core team members approve this change, it will be merged and you will become an official Symfony contributor! I am going to sit back now and wait for the reviews. Cheers! Carsonbot |
$collector = new SerializerDataCollector(); | ||
$traceableSerializer = new TraceableSerializer($serializer, $collector); | ||
|
||
array_map([$traceableSerializer, 'normalize'], ['data']); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When using array_map
with a callable like above or a native first class callable like $traceableSerializer->normalize(...)
the problem occurs. Somehow PHP does not provide a file
and line
for that location when using debug_backtrace.
This is an example of the trace (that is called somewhere else), but to show what is happening:
src/Symfony/Component/Serializer/Tests/Debug/TraceableSerializerTest.php
Show resolved
Hide resolved
Thank you @OrestisZag. |
If the
TraceableSerializer
runs from a callable in anarray_map
, then the caller looses the file and the line because it was invoked. This causes a hard fail since the required items are not defined. The error is the following:The fix is to get the file and the line from the following array item which always is the caller class.