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

[RFC] add HydrationFactory as extension point for tracking hydrations #9545

Open
wants to merge 1 commit into
base: 2.12.x
Choose a base branch
from

Conversation

kbond
Copy link
Contributor

@kbond kbond commented Feb 25, 2022

This is a proposed extension point to help solve doctrine/DoctrineBundle#109. I'm thinking a HydratorInterface that AbstractHydrator implements should be added but wanted to get some feedback/input before going further.

The doctrine bundle could use this to add hydration times to the timeline:
Symfony-Profiler

The doctrine bundle could add something similar to https://github.com/debesha/DoctrineProfileExtraBundle#screenshots to the profiler panel.

You can see an example of how this could be used in DoctrineBundle here: https://github.com/kbond/symfony-reproducer/tree/hydration-profiler-poc (specifically kbond/symfony-reproducer@9a4e91b).

I don't think this causes any performance problems for hydration (when using the DefaultHydratorFactory).

@kbond kbond force-pushed the hydrator-factory branch 2 times, most recently from cc79d64 to ceb80da Compare February 25, 2022 16:21
@beberlei
Copy link
Member

I am torn, because it will encourage people to overwrite the existing hydrators, which are a bit too complex. Besides tracking the time there are not really many other use cases to use this extension point.

@kbond
Copy link
Contributor Author

kbond commented Feb 25, 2022

Any other ideas how to achieve? I really think this is an important metric to make available.

Maybe a HydrationLogger - similar to CacheLogger? Maybe a HydrationEvent?

@ostrolucky
Copy link
Member

I would be fine with this. This solves one of the inconsistencies between ODM and ORM, as ODM has this option. And I'm not a fan of not having features just because you can abuse them. I think ORM learned this lesson as well, since multiple important features have been deprecated years ago, only to get comeback recently and de-deprecated.

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.

None yet

3 participants