Handle this typehints
[hiphop-php.git] / hphp / test / quick / cuf-call10.php
blobaa04015e01b4c8566b81ed742a9128476f16b320
1 <?hh
3 class C1 {
4 public function __call($fn, $args) {
5 var_dump($fn, $args);
6 echo "\n";
10 function main1() {
11 $obj = new C1;
13 // call_user_func
14 call_user_func(array($obj, "__call"), "a", "b", "c", "d");
15 call_user_func(array($obj, "foo"), "a", "b", "c", "d");
17 // call_user_func_array
18 call_user_func_array(array($obj, "__call"), array("a", "b", "c", "d"));
19 call_user_func_array(array($obj, "foo"), array("a", "b", "c", "d"));
21 main1();
23 class C2 {
24 public function __call($fn, $args) {
25 echo "C2::__call\n";
26 var_dump(isset($this));
27 var_dump($fn, $args);
28 echo "\n";
30 public function test() {
31 call_user_func(array('C2', '__call'), "a", "b", "c", "d");
32 call_user_func(array('C2', 'foo'), "a", "b", "c", "d");
33 call_user_func(array('self', '__call'), "a", "b", "c", "d");
34 call_user_func(array('self', 'foo'), "a", "b", "c", "d");
38 function main2() {
39 $obj = new C2;
40 $obj->test();
42 main2();
44 class C3 {
45 public function __call($fn, $args) {
46 echo "C3::__call\n";
47 var_dump(isset($this));
48 var_dump($fn, $args);
49 echo "\n";
51 public static function test() {
52 // FPushClsMethodD
53 call_user_func(array('C3', 'foo'), "a", "b", "c", "d");
54 // FPushClsMethodF
55 call_user_func(array('self', 'foo'), "a", "b", "c", "d");
59 function main3() {
60 $obj = new C3;
61 $obj->test();
63 main3();
65 class B4 {
66 public function __call($fn, $args) {
67 var_dump($fn, $args);
68 echo "\n";
71 class C4 extends B4 {
74 function main4() {
75 $obj = new C4;
76 call_user_func(array($obj, 'foo'), "a", "b", "c", "d");
78 main4();
80 class A5 {
81 public function foo($w, $x, $y, $z) {
82 echo "A5::foo\n";
85 class B5 extends A5 {
86 public function __call($fn, $args) {
87 var_dump($fn, $args);
88 echo "\n";
91 class C5 extends B5 {
94 function main5() {
95 $obj = new C5;
96 call_user_func(array($obj, 'foo'), "a", "b", "c", "d");
98 main5();
100 class A6 {
102 class B6 extends A6 {
103 public function test() {
104 call_user_func('A6::foo', 1, 2, 3);
105 call_user_func(array('A6','foo'), 1, 2, 3);
108 class C6 extends B6 {
109 public function __call($fn, $args) {
110 var_dump($fn, $args);
114 function main6() {
115 $obj = new C6;
116 $obj->test();
118 $obj = new B6;
119 $obj->test();
121 main6();
123 class A7 {
124 public function __call($fn, $args) {
125 var_dump($fn, $args);
128 class B7 extends A7 {
129 public function test() {
130 call_user_func('A7::foo', 1, 2, 3);
131 call_user_func(array('A7', 'foo'), 1, 2, 3);
134 class C7 extends B7 {
137 function main7() {
138 $obj = new C7;
139 $obj->test();
141 $obj = new B7;
142 $obj->test();
144 main7();
146 class A8 {
147 public function __call($fn, $args) {
148 var_dump($fn, $args);
151 class B8 {
152 public function test() {
153 call_user_func('A8::foo', 1, 2, 3);
154 call_user_func(array('A8', 'foo'), 1, 2, 3);
157 class C8 extends B8 {
160 function main8() {
161 $obj = new C8;
162 $obj->test();
164 main8();
166 class C9 {
168 class D9 extends C9 {
169 public function __call($fn, $args) {
170 echo "D9::__call\n";
173 class E9 extends D9 {
174 public function __call($fn, $args) {
175 echo "E9::__call\n";
177 public function test() {
178 call_user_func(array($this, 'foo'));
179 call_user_func(array('D9', 'foo'));
180 call_user_func(array('E9', 'foo'));
183 class F9 extends D9 {
184 public function __call($fn, $args) {
185 echo "F9::__call\n";
189 function main9() {
190 $obj = new E9;
191 $obj->test();
193 call_user_func(array($obj, 'foo'));
194 call_user_func(array('D9', 'foo'));
196 main9();