xref: /PHP-8.0/tests/classes/__call_004.phpt (revision f8d79582)
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