global statement removal: hphp/test [7/x]
[hiphop-php.git] / hphp / test / quick / call10.php
blobd0a30fcd9a49eff71e93432ba5bfefa28207e433
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 // FPushObjMethodD
14 $obj->__call("a", "b", "c", "d");
15 $obj->foo("a", "b", "c", "d");
17 // FPushObjMethod
18 $fn = '__call';
19 $obj->$fn("a", "b", "c", "d");
20 $fn = 'foo';
21 $obj->$fn("a", "b", "c", "d");
24 main1();
26 class C2 {
27 public function __call($fn, $args) {
28 echo "C2::__call\n";
29 var_dump(isset($this));
30 var_dump($fn, $args);
31 echo "\n";
33 public function test() {
34 // FPushClsMethodD
35 C2::__call("a", "b", "c", "d");
36 C2::foo("a", "b", "c", "d");
38 // FPushClsMethod
39 $cls = 'C2';
40 $cls::__call("a", "b", "c", "d");
41 $cls::foo("a", "b", "c", "d");
42 $fn = '__call';
43 C2::$fn("a", "b", "c", "d");
44 $fn = 'foo';
45 C2::$fn("a", "b", "c", "d");
46 $fn = '__call';
47 $cls::$fn("a", "b", "c", "d");
48 $fn = 'foo';
49 $cls::$fn("a", "b", "c", "d");
51 // FPushClsMethodF
52 self::__call("a", "b", "c", "d");
53 self::foo("a", "b", "c", "d");
57 function main2() {
58 $obj = new C2;
59 $obj->test();
62 main2();
64 class B3 {
65 public function __call($fn, $args) {
66 var_dump($fn, $args);
67 echo "\n";
70 class C3 extends B3 {
73 function main3() {
74 $obj = new C3;
76 // FPushObjMethodD
77 $obj->__call("a", "b", "c", "d");
78 $obj->foo("a", "b", "c", "d");
80 // FPushObjMethod
81 $fn = '__call';
82 $obj->$fn("a", "b", "c", "d");
83 $fn = 'foo';
84 $obj->$fn("a", "b", "c", "d");
87 main3();
89 class A4 {
90 public function foo($w, $x, $y, $z) {
91 echo "A4::foo\n";
94 class B4 extends A4 {
95 public function __call($fn, $args) {
96 var_dump($fn, $args);
97 echo "\n";
100 class C4 extends B4 {
103 function main4() {
104 $obj = new C4;
105 $obj->foo("a", "b", "c", "d");
106 $fn = 'foo';
107 $obj->$fn("a", "b", "c", "d");
109 main4();
111 class A5 {
113 class B5 extends A5 {
114 public function test() {
115 A5::foo();
118 class C5 extends B5 {
119 public function __call($fn, $args) {
120 var_dump($fn, $args);
124 function main5() {
125 $obj = new C5;
126 $obj->test();
129 main5();
131 class A6 {
132 public function __call($fn, $args) {
133 var_dump($fn, $args);
136 class B6 extends A6 {
137 public function test() {
138 A6::foo();
141 class C6 extends B6 {
144 function main6() {
145 $obj = new C6;
146 $obj->test();
149 main6();