class scope {
var $parent;
function __call( $name ) {
if(isset($parent[$name]) { return $parent[$name](); }
throw( new someException() );
}
function let( $name, $value ) {
if(is_object($value)) {
//hygiene
if(isset($this->$name)) { $this->$name->parent = null; }
$this->$name = $value;
$this->$name->parent = $this;
}
}
//alternative let
function let($parent, $name, $class) {
$parent->$name = new $class();
$parent->$name->parent = array($parent,$name);
}
?>