<?php
class Foo {
private $values = array(); public function __get($name) { return $this->values[$name] + 1; }
public function __set($name, $val) { $this->values[$name] = $val; }
}
$foo = new Foo;
$foo->test = 1;
echo "The retrieved value should be 2: $foo->test\n";
// And now...
$val = $foo->bar = 1;
echo "For good or for worse, \$val is $val and \$foo->bar is $foo->bar\n";
PD9waHAKCmNsYXNzIEZvbyB7CiAgICBwcml2YXRlICR2YWx1ZXMgPSBhcnJheSgpOwogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRuYW1lKSB7IHJldHVybiAkdGhpcy0+dmFsdWVzWyRuYW1lXSArIDE7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldCgkbmFtZSwgJHZhbCkgeyAkdGhpcy0+dmFsdWVzWyRuYW1lXSA9ICR2YWw7IH0KfQoKJGZvbyA9IG5ldyBGb287CiRmb28tPnRlc3QgPSAxOwplY2hvICJUaGUgcmV0cmlldmVkIHZhbHVlIHNob3VsZCBiZSAyOiAkZm9vLT50ZXN0XG4iOwoKLy8gQW5kIG5vdy4uLgokdmFsID0gJGZvby0+YmFyID0gMTsKZWNobyAiRm9yIGdvb2Qgb3IgZm9yIHdvcnNlLCBcJHZhbCBpcyAkdmFsIGFuZCBcJGZvby0+YmFyIGlzICRmb28tPmJhclxuIjsK