summaryrefslogtreecommitdiff
path: root/Zend/tests/fr47160.phpt
blob: 809e1f160360753b6dbaf9652272448aa0b2e0dd (plain)
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
--TEST--
Calling method from array
--FILE--
<?php

class Hello {
	public function world($x) {
		echo "Hello, $x\n"; return $this;
	}
}

class Hello2 {
	static public function world($x) {
		echo "Hello, $x\n";
	}
}

class Magic {
	public function __call($f, $a) {
		printf("%s called (%s)!\n", __METHOD__, $f);
	}
}

class Magic2 {
	public static function __callStatic($f, $a) {
		printf("%s called (%s)!\n", __METHOD__, $f);
	}
}

class Magic3 {
	public static function __callStatic($f, $a) {
		printf("%s called (%s)!\n", __METHOD__, $f);
	}
	public function __call($f, $a) {
		printf("%s called (%s)!\n", __METHOD__, $f);
	}
}

$f = array('Hello','world');
var_dump($f('you'));
var_dump(call_user_func($f, 'you'));

printf("-----\n");

$h= new Hello;
$f = array($h,'world');
var_dump($f('again'));
var_dump(call_user_func($f, 'again'));

printf("-----\n");

function bar() {
	return array(new Hello,'world');
}
$f = bar();
var_dump($f('there'));
var_dump(call_user_func($f, 'there'));

printf("-----\n");

$x = function ($c,$v) { return array($c, $v); };

$c = new Hello;
$m = 'world';
$f = $x($c, $m);
var_dump($f('devs'));
var_dump(call_user_func($f, 'devs'));

printf("-----\n");

$f = array(new Magic, 'foo');
$f();
call_user_func($f);

printf("-----\n");

$f = array('Magic2', 'foo');
$f();
call_user_func($f);


printf("-----\n");

$f = array('Magic3', 'foo');
$f();
call_user_func($f);

printf("-----\n");

$f = array(new Magic3, 'foo');
$f();
call_user_func($f);

printf("-----\n");

$f = array(new Hello2, 'world');
var_dump($f('you'));
var_dump(call_user_func($f, 'you'));

?>
--EXPECTF--
Strict Standards: Non-static method Hello::world() should not be called statically in %s on line %d
Hello, you

Notice: Undefined variable: this in %s on line %d
NULL

Strict Standards: call_user_func() expects parameter 1 to be a valid callback, non-static method Hello::world() should not be called statically in %s on line %d
Hello, you

Notice: Undefined variable: this in %s on line %d
NULL
-----
Hello, again
object(Hello)#1 (0) {
}
Hello, again
object(Hello)#1 (0) {
}
-----
Hello, there
object(Hello)#2 (0) {
}
Hello, there
object(Hello)#2 (0) {
}
-----
Hello, devs
object(Hello)#4 (0) {
}
Hello, devs
object(Hello)#4 (0) {
}
-----
Magic::__call called (foo)!
Magic::__call called (foo)!
-----
Magic2::__callStatic called (foo)!
Magic2::__callStatic called (foo)!
-----
Magic3::__callStatic called (foo)!
Magic3::__callStatic called (foo)!
-----
Magic3::__call called (foo)!
Magic3::__call called (foo)!
-----
Hello, you
NULL
Hello, you
NULL