> It's now much harder to understand my code at a glance.
Why? Property hooks aren't mandatory.
If you want to keep using explicit getter/setter methods, you can do that.
If you want to keep using implicit getter/setter hooks via __get/__set, you can do that.
If you want to keep using plain property access, you can do that.
All this does, is allow features that previously relied on the black box of __get/__set to be exposed as real properties. This massively improves the scenario for anything that works via reflection, and makes a whole suite of bugs related to unintended behaviour, simply impossible.