__get
, __set
, __call
and __callStatic
are invoked when the method or property is inaccessible. Your $bar
is public and therefor not inaccessible.
See the section on Property Overloading in the manual:
__set()
is run when writing data to inaccessible properties.__get()
is utilized for reading data from inaccessible properties.
The magic methods are not substitutes for getters and setters. They just allow you to handle method calls or property access that would otherwise result in an error. As such, there are much more related to error handling. Also note that they are considerably slower than using proper getter and setter or direct method calls.