I'm all for having the "internal" methods being totally normal magic methods, for the reduced complexity reasons already mentioned.
I would also expect to be able to simply define such a magic method myself, and have it behave in just the same way as when defining it using the accessor declaration syntactic sugar. To formulate it a different way: first expand on the current __get/__set magic methods by clearly documenting a new set of per-property-name magic methods, and the rules when they are called. Then on top of that, introduce and document the accessor declaration syntactic sugar. One point that came up some time ago, I'd like to mention again: there is already a magic method named __set_state which would collide head on with an accessor setter method for a property $_state IF that method would follow the __set$PROPNAME pattern. As a solution for that, I'd propose naming the new magic methods with a so-far-not-taken common prefix: __prop - i.e. name them __prop_get_xxx, __prop_set_xxx, and so on. best regards Patrick