It's now only generated if something to put in it is specified via: %pragma(php) include=... or %pragma(php) code=...
69 lines
1.3 KiB
PHP
69 lines
1.3 KiB
PHP
<?php
|
|
|
|
require "tests.php";
|
|
|
|
// No new functions
|
|
check::functions(array());
|
|
// New classes
|
|
check::classes(array('Foo_int','Bar','FooBar_int'));
|
|
// No new vars
|
|
check::globals(array());
|
|
|
|
class A extends FooBar_int {
|
|
function do_step() {
|
|
return "A::do_step;";
|
|
}
|
|
|
|
function get_value() {
|
|
return "A::get_value";
|
|
}
|
|
}
|
|
|
|
$a = new A();
|
|
check::equal($a->step(), "Bar::step;Foo::advance;Bar::do_advance;A::do_step;", "Bad A virtual resolution");
|
|
|
|
class B extends FooBar_int {
|
|
function do_advance() {
|
|
return "B::do_advance;" . $this->do_step();
|
|
}
|
|
|
|
function do_step() {
|
|
return "B::do_step;";
|
|
}
|
|
|
|
function get_value() {
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
$b = new B();
|
|
|
|
check::equal($b->step(), "Bar::step;Foo::advance;B::do_advance;B::do_step;", "Bad B virtual resolution");
|
|
|
|
class C extends FooBar_int {
|
|
function do_advance() {
|
|
return "C::do_advance;" . parent::do_advance();
|
|
}
|
|
|
|
function do_step() {
|
|
return "C::do_step;";
|
|
}
|
|
|
|
function get_value() {
|
|
return 2;
|
|
}
|
|
|
|
function get_name() {
|
|
return parent::get_name() . " hello";
|
|
}
|
|
}
|
|
|
|
$cc = new C();
|
|
$c = Foobar_int::get_self($cc);
|
|
$c->advance();
|
|
|
|
check::equal($c->get_name(), "FooBar::get_name hello", "get_name failed");
|
|
|
|
check::equal($c->name(), "FooBar::get_name hello", "name failed");
|
|
|
|
check::done();
|