<?php
 
class A {
	public $_tst;
	public $_cb;
 
        function __construct () {


		$this->_cb = function($x) {
			return 10;
		};
 
	}

	function __call($n, $v) {
		if ($n === 'cb') {
			return call_user_func($this->_cb, $v);
		}
	}
 
	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();