<?php
class A {
public $_tst;
public $_cb;
function __construct () {
$this->_cb = function($x) {
return 10;
};
}
function __call($n, $v) {
if ($n === 'cb') {
}
}
function __set($n, $v) {
if ($n === 'tst') {
$this->_tst = $this->cb($v);
}
if ($n === 'cb') {
$this->_cb = $v;
}
}
function run() {
echo $this->_tst . "\n";
}
}
$a = new A();
$a->tst = 30;
$a->run();
$a->cb = function() {return 50;};
$a->tst = 70;
$a->run();
PD9waHAKIApjbGFzcyBBIHsKCXB1YmxpYyAkX3RzdDsKCXB1YmxpYyAkX2NiOwogCiAgICAgICAgZnVuY3Rpb24gX19jb25zdHJ1Y3QgKCkgewoKCgkJJHRoaXMtPl9jYiA9IGZ1bmN0aW9uKCR4KSB7CgkJCXJldHVybiAxMDsKCQl9OwogCgl9CgoJZnVuY3Rpb24gX19jYWxsKCRuLCAkdikgewoJCWlmICgkbiA9PT0gJ2NiJykgewoJCQlyZXR1cm4gY2FsbF91c2VyX2Z1bmMoJHRoaXMtPl9jYiwgJHYpOwoJCX0KCX0KIAoJZnVuY3Rpb24gX19zZXQoJG4sICR2KSB7CgkJaWYgKCRuID09PSAndHN0JykgewoJCQkkdGhpcy0+X3RzdCA9ICR0aGlzLT5jYigkdik7CgkJfQoJCWlmICgkbiA9PT0gJ2NiJykgewoJCQkkdGhpcy0+X2NiID0gJHY7CgkJfQoJfQogCglmdW5jdGlvbiBydW4oKSB7CgkJZWNobyAkdGhpcy0+X3RzdCAuICJcbiI7Cgl9Cn0KIAokYSA9IG5ldyBBKCk7CiAKJGEtPnRzdCA9IDMwOwogCiRhLT5ydW4oKTsKIAokYS0+Y2IgPSBmdW5jdGlvbigpIHtyZXR1cm4gNTA7fTsKIAokYS0+dHN0ID0gNzA7CiAKJGEtPnJ1bigpOw==