xref: /PHP-7.4/tests/classes/__call_004.phpt (revision 782352c5)
1--TEST--
2When __call() is invoked via ::, ensure current scope's __call() is favoured over the specified class's  __call().
3--FILE--
4<?php
5class A {
6	function __call($strMethod, $arrArgs) {
7		echo "In " . __METHOD__ . "($strMethod, array(" . implode(',',$arrArgs) . "))\n";
8		var_dump($this);
9	}
10}
11
12class B extends A {
13	function __call($strMethod, $arrArgs) {
14		echo "In " . __METHOD__ . "($strMethod, array(" . implode(',',$arrArgs) . "))\n";
15		var_dump($this);
16	}
17
18	function test() {
19		A::test1(1,'a');
20		B::test2(1,'a');
21		self::test3(1,'a');
22		parent::test4(1,'a');
23	}
24}
25
26$b = new B();
27$b->test();
28?>
29--EXPECT--
30In B::__call(test1, array(1,a))
31object(B)#1 (0) {
32}
33In B::__call(test2, array(1,a))
34object(B)#1 (0) {
35}
36In B::__call(test3, array(1,a))
37object(B)#1 (0) {
38}
39In B::__call(test4, array(1,a))
40object(B)#1 (0) {
41}
42