class Magic { public $a = \"A\"; protected $b = array(\"a\" => \"A\", \"b\" => \"B\", \"c\" => \"C\"); protected $c = array(1,2,3); public function __get($v)
then… what do you expect?
It calls __get
/__set
if you don't have from your actual scope the rights to access the property / the property doesn't exist.
So $m->a
gets directly "A"; $m->b
and $m->c
call first __get("b")
and __get("c")
(return "B" and "C" after echoing "b, c, ")
The same is for $m->c = "CC";
: it calls __set("c", "CC")
as $c
is a protected (non-accessible) property. (sets $m->c to "CC" after echoing "c: CC")