This is a PoC for partial proxy objects in Doctrine. Properties can be dynamically filled without initializing the proxy object. Once a property is modified or an uninitialized property is read, the entire proxy object will be initialized with data from the database.
The idea is to unset all properties in the constructor. This is currently done for public properties to allow lazy-loading them. This principle is applied to all properties. Once a property is modified, its value is set using reflection to avoid creating the property in a public scope.
Currently, it is possible to either read or write a single private or public property from outside the objects scope. This is due to the fact how magic methods work. There would need to be logic in place to prevent this.