Skip to content


DDC-1076: It should be possible to supply EntityManager with a custom ProxyFactory #1669

doctrinebot opened this Issue · 5 comments

4 participants


Jira issue originally created by user putgeminmouth:

It is plausible that one might want to handle the loading of proxy classes in their own way, perhaps not using the filename/class scheme doctrine currently comes with.

Currently the only way to provide your own implementation of ProxyFactory is to subclass EntityManager. Even this is not clean since one also must copy/paste the EntityManager::create factory method to get identical behavior.

It would be nice if there was a ProxyFactory interface and one could provide an instance of it to Doctrine\ORM\Configuration when creating an EntityManager.


Comment created by putgeminmouth:

I would be happy to contribute a patch to this end.


Comment created by @beberlei:

Can you elaborate on your use-case? proxies are sorft of a by product, to be genreated in a temporary cache directory. I don't see why one should bother about how it is done.


Comment created by putgeminmouth:

I think allowing users to specify their own implementations for things is pretty essential for a library, especially when there is no cost in complexity or implementation.

Anyhow, here's my pitch:

I personally do not like using inheritance for proxies (it feels hackish to me), preferring instead to have interfaces for my Business Objects which the proxies implement. To that end, I do not generate my proxies with doctrine, but maintain my own, in my code base, and the class files do not necessarily match up to the doctrine ProxyFactory's assumptions about where to find the classes.


@beberlei beberlei was assigned by doctrinebot
Doctrine member

I think this is a no, given the complexity and scope of proxy management in the orm.

@beberlei beberlei was unassigned by Ocramius
Doctrine member

@zeroedin-bill I second that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.