File tree 1 file changed +119
-0
lines changed
1 file changed +119
-0
lines changed Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ Bug #69180: Backtrace does not honor trait conflict resolution / method aliasing
3
+ --FILE--
4
+ <?php
5
+
6
+ trait T {
7
+ public function __get ($ name ): string {
8
+ var_dump (__METHOD__ );
9
+ print_r (array_map (fn ($ v ) => $ v ['class ' ] . ':: ' . $ v ['function ' ], debug_backtrace ()));
10
+
11
+ return '= ' . $ name ;
12
+ }
13
+ }
14
+
15
+ class Model {
16
+ use T {
17
+ T::__get as private __t_get;
18
+ }
19
+
20
+ public function __get ($ name ): string {
21
+ var_dump (__METHOD__ );
22
+ return $ this ->__t_get ($ name );
23
+ }
24
+ }
25
+
26
+ class X extends Model {}
27
+
28
+ class Y extends Model {
29
+ public function __get ($ name ): string {
30
+ var_dump (__METHOD__ );
31
+ return parent ::__get ($ name );
32
+ }
33
+ }
34
+
35
+ class Z extends Model {
36
+ private function __x_get ($ name ): string {
37
+ var_dump (__METHOD__ );
38
+ return parent ::__get ($ name );
39
+ }
40
+
41
+ public function __get ($ name ): string {
42
+ var_dump (__METHOD__ );
43
+ return $ this ->__x_get ($ name );
44
+ }
45
+ }
46
+
47
+ class P extends Model {
48
+ private function __t_get ($ name ): string {
49
+ var_dump (__METHOD__ );
50
+ return parent ::__get ($ name );
51
+ }
52
+
53
+ public function __get ($ name ): string {
54
+ var_dump (__METHOD__ );
55
+ return $ this ->__t_get ($ name );
56
+ }
57
+ }
58
+
59
+ $ m = new X ();
60
+ $ m ->a ;
61
+
62
+ echo "\n" ;
63
+
64
+ $ m = new Y ();
65
+ $ m ->a ;
66
+
67
+ echo "\n" ;
68
+
69
+ $ m = new Z ();
70
+ $ m ->a ;
71
+
72
+ echo "\n" ;
73
+
74
+ $ m = new P ();
75
+ $ m ->a ;
76
+
77
+ ?>
78
+ --EXPECT--
79
+ string(12) "Model::__get"
80
+ string(8) "T::__get"
81
+ Array
82
+ (
83
+ [0] => Model::__t_get
84
+ [1] => Model::__get
85
+ )
86
+
87
+ string(8) "Y::__get"
88
+ string(12) "Model::__get"
89
+ string(8) "T::__get"
90
+ Array
91
+ (
92
+ [0] => Model::__t_get
93
+ [1] => Model::__get
94
+ [2] => Y::__get
95
+ )
96
+
97
+ string(8) "Z::__get"
98
+ string(10) "Z::__x_get"
99
+ string(12) "Model::__get"
100
+ string(8) "T::__get"
101
+ Array
102
+ (
103
+ [0] => Model::__t_get
104
+ [1] => Model::__get
105
+ [2] => Z::__x_get
106
+ [3] => Z::__get
107
+ )
108
+
109
+ string(8) "P::__get"
110
+ string(10) "P::__t_get"
111
+ string(12) "Model::__get"
112
+ string(8) "T::__get"
113
+ Array
114
+ (
115
+ [0] => Model::__t_get
116
+ [1] => Model::__get
117
+ [2] => P::__t_get
118
+ [3] => P::__get
119
+ )
You can’t perform that action at this time.
0 commit comments