1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
|
--TEST--
ZE2 An interface extends base interfaces
--SKIPIF--
<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
--FILE--
<?php
interface if_a {
function f_a();
}
interface if_b {
function f_b();
}
interface if_c extends if_a, if_b {
function f_c();
}
interface if_d extends if_a, if_b {
function f_d();
}
interface if_e {
function f_d();
}
interface if_f extends /*if_e,*/ if_a, if_b, if_c, if_d /*, if_e*/ {
}
class base {
function test($class) {
echo "is_a(" . get_class($this) . ", $class) ". (($this instanceof $class) ? "yes\n" : "no\n");
}
}
echo "class_a\n";
class class_a extends base implements if_a {
function f_a() {}
function f_b() {}
function f_c() {}
function f_d() {}
function f_e() {}
}
$t = new class_a();
echo $t->test('if_a');
echo $t->test('if_b');
echo $t->test('if_c');
echo $t->test('if_d');
echo $t->test('if_e');
echo "class_b\n";
class class_b extends base implements if_a, if_b {
function f_a() {}
function f_b() {}
function f_c() {}
function f_d() {}
function f_e() {}
}
$t = new class_b();
echo $t->test('if_a');
echo $t->test('if_b');
echo $t->test('if_c');
echo $t->test('if_d');
echo $t->test('if_e');
echo "class_c\n";
class class_c extends base implements if_c {
function f_a() {}
function f_b() {}
function f_c() {}
function f_d() {}
function f_e() {}
}
$t = new class_c();
echo $t->test('if_a');
echo $t->test('if_b');
echo $t->test('if_c');
echo $t->test('if_d');
echo $t->test('if_e');
echo "class_d\n";
class class_d extends base implements if_d{
function f_a() {}
function f_b() {}
function f_c() {}
function f_d() {}
function f_e() {}
}
$t = new class_d();
echo $t->test('if_a');
echo $t->test('if_b');
echo $t->test('if_c');
echo $t->test('if_d');
echo $t->test('if_e');
echo "class_e\n";
class class_e extends base implements if_a, if_b, if_c, if_d {
function f_a() {}
function f_b() {}
function f_c() {}
function f_d() {}
function f_e() {}
}
$t = new class_e();
echo $t->test('if_a');
echo $t->test('if_b');
echo $t->test('if_c');
echo $t->test('if_d');
echo $t->test('if_e');
echo "class_f\n";
class class_f extends base implements if_e {
function f_a() {}
function f_b() {}
function f_c() {}
function f_d() {}
function f_e() {}
}
$t = new class_f();
echo $t->test('if_a');
echo $t->test('if_b');
echo $t->test('if_c');
echo $t->test('if_d');
echo $t->test('if_e');
echo "class_g\n";
class class_g extends base implements if_f {
function f_a() {}
function f_b() {}
function f_c() {}
function f_d() {}
function f_e() {}
}
$t = new class_g();
echo $t->test('if_a');
echo $t->test('if_b');
echo $t->test('if_c');
echo $t->test('if_d');
echo $t->test('if_e');
?>
===DONE===
--EXPECTF--
class_a
is_a(class_a, if_a) yes
is_a(class_a, if_b) no
is_a(class_a, if_c) no
is_a(class_a, if_d) no
is_a(class_a, if_e) no
class_b
is_a(class_b, if_a) yes
is_a(class_b, if_b) yes
is_a(class_b, if_c) no
is_a(class_b, if_d) no
is_a(class_b, if_e) no
class_c
is_a(class_c, if_a) yes
is_a(class_c, if_b) yes
is_a(class_c, if_c) yes
is_a(class_c, if_d) no
is_a(class_c, if_e) no
class_d
is_a(class_d, if_a) yes
is_a(class_d, if_b) yes
is_a(class_d, if_c) no
is_a(class_d, if_d) yes
is_a(class_d, if_e) no
class_e
is_a(class_e, if_a) yes
is_a(class_e, if_b) yes
is_a(class_e, if_c) yes
is_a(class_e, if_d) yes
is_a(class_e, if_e) no
class_f
is_a(class_f, if_a) no
is_a(class_f, if_b) no
is_a(class_f, if_c) no
is_a(class_f, if_d) no
is_a(class_f, if_e) yes
class_g
is_a(class_g, if_a) yes
is_a(class_g, if_b) yes
is_a(class_g, if_c) yes
is_a(class_g, if_d) yes
is_a(class_g, if_e) no
===DONE===
|