xref: /PHP-7.4/Zend/tests/bug50383.phpt (revision 5e8133f4)
1--TEST--
2Bug #50383 (Exceptions thrown in __call / __callStatic do not include file and line in trace)
3--FILE--
4<?php
5
6class myClass {
7	public static function __callStatic($method, $args) {
8		throw new Exception("Missing static method '$method'\n");
9	}
10	public function __call($method, $args) {
11		throw new Exception("Missing method '$method'\n");
12	}
13}
14
15function thrower() {
16	myClass::ThrowException();
17}
18function thrower2() {
19	$x = new myClass;
20	$x->foo();
21}
22
23try {
24	thrower();
25} catch(Exception $e) {
26	print $e->getMessage();
27	print_r($e->getTrace());
28}
29
30try {
31	thrower2();
32} catch (Exception $e) {
33	print $e->getMessage();
34	print_r($e->getTrace());
35}
36
37?>
38--EXPECTF--
39Missing static method 'ThrowException'
40Array
41(
42    [0] => Array
43        (
44            [file] => %s
45            [line] => 13
46            [function] => __callStatic
47            [class] => myClass
48            [type] => ::
49            [args] => Array
50                (
51                    [0] => ThrowException
52                    [1] => Array
53                        (
54                        )
55
56                )
57
58        )
59
60    [1] => Array
61        (
62            [file] => %s
63            [line] => 21
64            [function] => thrower
65            [args] => Array
66                (
67                )
68
69        )
70
71)
72Missing method 'foo'
73Array
74(
75    [0] => Array
76        (
77            [file] => %s
78            [line] => 17
79            [function] => __call
80            [class] => myClass
81            [type] => ->
82            [args] => Array
83                (
84                    [0] => foo
85                    [1] => Array
86                        (
87                        )
88
89                )
90
91        )
92
93    [1] => Array
94        (
95            [file] => %s
96            [line] => 28
97            [function] => thrower2
98            [args] => Array
99                (
100                )
101
102        )
103
104)
105