// get dynamic property, if one exists; else, fails echo "dynamic dummy: {$v}\n"; $p->dummy = 987; // set visible property $p->__set('dummy', 456); // set dynamic property $v = $p->dummy; // get visible property echo "dummy: {$v}\n"; $v = $p->__get('dummy'); // get dynamic property echo "dynamic dummy: {$v}\n"; echo "----------------------\n"; var_dump(isset($p->dummy)); // test if dummy exists and is accessible, or is dynamic var_dump($p->__isset('dummy')); // test if dynamic dummy exists echo "----------------------\n"; $v = $p->x; // try to get at an invisible property; can't. The runtime sees that x // exists, but is invisible, so it calls __get to search for a dynamic // property of that name, which fails. NULL is returned. var_dump($v); echo "----------------------\n"; var_dump(isset($p->x)); // test if x exists and is accessible, or is dynamic var_dump($p->__isset('x')); // test if x exists and is accessible, or is dynamic $p->x = 200; var_dump($p->x); var_dump(isset($p->x));