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