val = $val; } function get_value() { $this->val = $this->val + 1; return $this->val; } function get_class() { $this->val = $this->val + 1; return new A(); } function just_do_it() { $this->val = $this->val + 1; } /* clone is a reserved keyword */ function clone_() { return new MyBar($this->val); } } $b = new MyBar(); $f = $b->baseclass(); $v = $f->get_value(); $a = $f->get_class(); $f->just_do_it(); $c = $b->clone_(); $vc = $c->get_value(); check::equal($v, 3, "f: Bad virtual detection"); check::equal($b->val, 5, "b: Bad virtual detection"); check::equal($vc, 6, "c: Bad virtual detection"); check::done(); ?>