Veo que sacaste el código del manual, pero.. Al menos leíste lo demás? Ahí está todo
Cita: Se invoca a los métodos de sobrecarga cuando se interactúa con propiedades o métodos que no se han declarado o que no son visibles en el ámbito activo.
La variable 'a' no está definida en la clase y aún así intentas interactuar con ella, es por eso que se llama a __get()