Skip to content

Conversation

@Arkemlar
Copy link

@Arkemlar Arkemlar commented Mar 5, 2025

During past half year I made a couple updates in my fork and I hope my efforts will benefit not only me.

First of all, I improved normalization for iterable objects (see #127).

This required me to dive deeply into SerializerTrait.php and that was not an easy task to understand whats going on. I found it might be refactored and optimized. Now call stack grows little slower when going deeper in object graph and debugging is easier. So as overall speed (if anyone cares).

Lastly, I added little feature - pass current (dunglas's one) serializer into context, so normalizers can use this. I needed that because I have multiple normalization contexts and handling with them that way is much more easier. You might ask why no use NormalizerAwareInterface in normalizers? Well, this leads to switching to main Serializer config once $this->normalizer->normalize() called inside custom normalizer. That main config differs from odm's one.

I will be happy if it helps. May be this PR needs to be separated to multiple ones, well, thats fine then, I'll do that.

Aweptimum and others added 6 commits October 27, 2023 12:32
Added a test class, Vector, implementing \Iterator and a corresponding test case in the SerializerTest that demonstrates iterable data doesn't play nice with the serializer.
Add de&normalizer for Traversable types
Add VectorNormalizer as an example of how to make custom normalizers for cases when other normalizers fails
…malizer service inside custom normalizers. This is needed when multiple serializer configs exists in the system.
@Arkemlar Arkemlar mentioned this pull request Mar 5, 2025
@Arkemlar
Copy link
Author

I will do code style changes if everything else is good and PR going to be merged.

@Julianthanner
Copy link

any updates on this PR? this improves speed for us significantly

@Arkemlar
Copy link
Author

Arkemlar commented Oct 25, 2025

Well, since there are someones who account it as useful change, I will update code to pass style ci checks and ask dunglas to merge it.
Will do that soon, preferably next week if wont get too busy at work.

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.

3 participants