clementtalleu / php-redis-om

A PHP object mapper for redis
MIT License
154 stars 7 forks source link

object instantiation on return from find* methods #82

Open flug opened 2 months ago

flug commented 2 months ago

Currently, object instantiation is done through a new new $type() closed to the constructor, which requires having setters or public properties outside the constructor.

Therefore, I propose creating an object mapper so that, regardless of where the fields are, the object is correctly rehydrated.

I have started developing a classMapper that takes mappers via a decorator, similar to how the Symfony serializer might work. Would this be suitable? @clementtalleu

clementtalleu commented 2 months ago

the initial idea was to impose public methods, but this could be a good solution, we just need to make sure we don't degrade performance (there's no reason to).

flug commented 2 months ago

yeah but it's a bit of a pain because it makes the object inconsistent

stof commented 5 days ago

Another option is to do things like the Doctrine ORM and ODM: bypass the public API of the class, by instantiating without calling the constructor and assigning properties using Reflection, which leaves the public API totally free for the needs of the project itself.