54 lines
968 B
PHP
54 lines
968 B
PHP
<?php
|
|
|
|
require "tests.php";
|
|
require "director_detect.php";
|
|
|
|
// No new functions
|
|
check::functions(array());
|
|
// New classes
|
|
check::classes(array('A','Foo','Bar'));
|
|
// No new vars
|
|
check::globals(array());
|
|
|
|
class MyBar extends Bar {
|
|
function __construct($val = 2) {
|
|
parent::__construct();
|
|
$this->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();
|