@@ -59,83 +59,7 @@ public static function register($mode = 0)
59
59
60
60
self ::computeMode ($ mode );
61
61
62
- $ deprecationHandler = function ($ type , $ msg , $ file , $ line , $ context = array ()) {
63
- $ mode = self ::$ mode ;
64
- if ((E_USER_DEPRECATED !== $ type && E_DEPRECATED !== $ type ) || self ::MODE_DISABLED === $ mode ) {
65
- $ ErrorHandler = self ::utilPrefix ().'ErrorHandler ' ;
66
-
67
- return $ ErrorHandler ::handleError ($ type , $ msg , $ file , $ line , $ context );
68
- }
69
-
70
- $ trace = debug_backtrace ();
71
- $ group = 'other ' ;
72
- $ isVendor = self ::MODE_WEAK_VENDORS === $ mode && self ::inVendors ($ file );
73
-
74
- $ i = \count ($ trace );
75
- while (1 < $ i && (!isset ($ trace [--$ i ]['class ' ]) || ('ReflectionMethod ' === $ trace [$ i ]['class ' ] || 0 === strpos ($ trace [$ i ]['class ' ], 'PHPUnit_ ' ) || 0 === strpos ($ trace [$ i ]['class ' ], 'PHPUnit \\' )))) {
76
- // No-op
77
- }
78
-
79
- if (isset ($ trace [$ i ]['object ' ]) || isset ($ trace [$ i ]['class ' ])) {
80
- if (isset ($ trace [$ i ]['class ' ]) && 0 === strpos ($ trace [$ i ]['class ' ], 'Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerFor ' )) {
81
- $ parsedMsg = unserialize ($ msg );
82
- $ msg = $ parsedMsg ['deprecation ' ];
83
- $ class = $ parsedMsg ['class ' ];
84
- $ method = $ parsedMsg ['method ' ];
85
- // If the deprecation has been triggered via
86
- // \Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerTrait::endTest()
87
- // then we need to use the serialized information to determine
88
- // if the error has been triggered from vendor code.
89
- $ isVendor = self ::MODE_WEAK_VENDORS === $ mode && isset ($ parsedMsg ['triggering_file ' ]) && self ::inVendors ($ parsedMsg ['triggering_file ' ]);
90
- } else {
91
- $ class = isset ($ trace [$ i ]['object ' ]) ? \get_class ($ trace [$ i ]['object ' ]) : $ trace [$ i ]['class ' ];
92
- $ method = $ trace [$ i ]['function ' ];
93
- }
94
-
95
- $ Test = self ::utilPrefix ().'Test ' ;
96
-
97
- if (0 !== error_reporting ()) {
98
- $ group = 'unsilenced ' ;
99
- } elseif (0 === strpos ($ method , 'testLegacy ' )
100
- || 0 === strpos ($ method , 'provideLegacy ' )
101
- || 0 === strpos ($ method , 'getLegacy ' )
102
- || strpos ($ class , '\Legacy ' )
103
- || \in_array ('legacy ' , $ Test ::getGroups ($ class , $ method ), true )
104
- ) {
105
- $ group = 'legacy ' ;
106
- } elseif ($ isVendor ) {
107
- $ group = 'remaining vendor ' ;
108
- } else {
109
- $ group = 'remaining ' ;
110
- }
111
-
112
- if (isset ($ mode [0 ]) && '/ ' === $ mode [0 ] && preg_match ($ mode , $ msg )) {
113
- $ e = new \Exception ($ msg );
114
- $ r = new \ReflectionProperty ($ e , 'trace ' );
115
- $ r ->setAccessible (true );
116
- $ r ->setValue ($ e , \array_slice ($ trace , 1 , $ i ));
117
-
118
- echo "\n" .ucfirst ($ group ).' deprecation triggered by ' .$ class .':: ' .$ method .': ' ;
119
- echo "\n" .$ msg ;
120
- echo "\nStack trace: " ;
121
- echo "\n" .str_replace (' ' .getcwd ().\DIRECTORY_SEPARATOR , ' ' , $ e ->getTraceAsString ());
122
- echo "\n" ;
123
-
124
- exit (1 );
125
- }
126
- if ('legacy ' !== $ group && self ::MODE_WEAK !== $ mode ) {
127
- $ ref = &self ::$ deprecations [$ group ][$ msg ]['count ' ];
128
- ++$ ref ;
129
- $ ref = &self ::$ deprecations [$ group ][$ msg ][$ class .':: ' .$ method ];
130
- ++$ ref ;
131
- }
132
- } elseif (self ::MODE_WEAK !== $ mode ) {
133
- $ ref = &self ::$ deprecations [$ group ][$ msg ]['count ' ];
134
- ++$ ref ;
135
- }
136
- ++self ::$ deprecations [$ group .'Count ' ];
137
- };
138
- $ oldErrorHandler = set_error_handler ($ deprecationHandler );
62
+ $ oldErrorHandler = set_error_handler (array (self ::class, 'handleError ' ));
139
63
140
64
if (null !== $ oldErrorHandler ) {
141
65
restore_error_handler ();
@@ -145,15 +69,15 @@ public static function register($mode = 0)
145
69
}
146
70
} else {
147
71
self ::$ isRegistered = true ;
148
- register_shutdown_function (function () use ( $ deprecationHandler ) {
72
+ register_shutdown_function (function () {
149
73
$ mode = self ::$ mode ;
150
74
if (isset ($ mode [0 ]) && '/ ' === $ mode [0 ]) {
151
75
return ;
152
76
}
153
77
$ currErrorHandler = set_error_handler ('var_dump ' );
154
78
restore_error_handler ();
155
79
156
- if ($ currErrorHandler !== $ deprecationHandler ) {
80
+ if ($ currErrorHandler !== array ( self ::class, ' handleError ' ) ) {
157
81
echo "\n" , self ::colorize ('THE ERROR HANDLER HAS CHANGED! ' , true , $ mode ), "\n" ;
158
82
}
159
83
@@ -382,4 +306,82 @@ private static function utilPrefix()
382
306
383
307
return self ::$ utilPrefix = (class_exists ('PHPUnit_Util_ErrorHandler ' ) ? 'PHPUnit_Util_ ' : 'PHPUnit\Util \\' );
384
308
}
309
+
310
+ public static function handleError ($ type , $ msg , $ file , $ line , $ context = array ())
311
+ {
312
+ $ mode = self ::$ mode ;
313
+ if ((E_USER_DEPRECATED !== $ type && E_DEPRECATED !== $ type ) || self ::MODE_DISABLED === $ mode ) {
314
+ $ ErrorHandler = self ::utilPrefix ().'ErrorHandler ' ;
315
+
316
+ return $ ErrorHandler ::handleError ($ type , $ msg , $ file , $ line , $ context );
317
+ }
318
+
319
+ $ trace = debug_backtrace ();
320
+ $ group = 'other ' ;
321
+ $ isVendor = self ::MODE_WEAK_VENDORS === $ mode && self ::inVendors ($ file );
322
+
323
+ $ i = \count ($ trace );
324
+ while (1 < $ i && (!isset ($ trace [--$ i ]['class ' ]) || ('ReflectionMethod ' === $ trace [$ i ]['class ' ] || 0 === strpos ($ trace [$ i ]['class ' ], 'PHPUnit_ ' ) || 0 === strpos ($ trace [$ i ]['class ' ], 'PHPUnit \\' )))) {
325
+ // No-op
326
+ }
327
+
328
+ if (isset ($ trace [$ i ]['object ' ]) || isset ($ trace [$ i ]['class ' ])) {
329
+ if (isset ($ trace [$ i ]['class ' ]) && 0 === strpos ($ trace [$ i ]['class ' ], 'Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerFor ' )) {
330
+ $ parsedMsg = unserialize ($ msg );
331
+ $ msg = $ parsedMsg ['deprecation ' ];
332
+ $ class = $ parsedMsg ['class ' ];
333
+ $ method = $ parsedMsg ['method ' ];
334
+ // If the deprecation has been triggered via
335
+ // \Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerTrait::endTest()
336
+ // then we need to use the serialized information to determine
337
+ // if the error has been triggered from vendor code.
338
+ $ isVendor = self ::MODE_WEAK_VENDORS === $ mode && isset ($ parsedMsg ['triggering_file ' ]) && self ::inVendors ($ parsedMsg ['triggering_file ' ]);
339
+ } else {
340
+ $ class = isset ($ trace [$ i ]['object ' ]) ? \get_class ($ trace [$ i ]['object ' ]) : $ trace [$ i ]['class ' ];
341
+ $ method = $ trace [$ i ]['function ' ];
342
+ }
343
+
344
+ $ Test = self ::utilPrefix ().'Test ' ;
345
+
346
+ if (0 !== error_reporting ()) {
347
+ $ group = 'unsilenced ' ;
348
+ } elseif (0 === strpos ($ method , 'testLegacy ' )
349
+ || 0 === strpos ($ method , 'provideLegacy ' )
350
+ || 0 === strpos ($ method , 'getLegacy ' )
351
+ || strpos ($ class , '\Legacy ' )
352
+ || \in_array ('legacy ' , $ Test ::getGroups ($ class , $ method ), true )
353
+ ) {
354
+ $ group = 'legacy ' ;
355
+ } elseif ($ isVendor ) {
356
+ $ group = 'remaining vendor ' ;
357
+ } else {
358
+ $ group = 'remaining ' ;
359
+ }
360
+
361
+ if (isset ($ mode [0 ]) && '/ ' === $ mode [0 ] && preg_match ($ mode , $ msg )) {
362
+ $ e = new \Exception ($ msg );
363
+ $ r = new \ReflectionProperty ($ e , 'trace ' );
364
+ $ r ->setAccessible (true );
365
+ $ r ->setValue ($ e , \array_slice ($ trace , 1 , $ i ));
366
+
367
+ echo "\n" .ucfirst ($ group ).' deprecation triggered by ' .$ class .':: ' .$ method .': ' ;
368
+ echo "\n" .$ msg ;
369
+ echo "\nStack trace: " ;
370
+ echo "\n" .str_replace (' ' .getcwd ().\DIRECTORY_SEPARATOR , ' ' , $ e ->getTraceAsString ());
371
+ echo "\n" ;
372
+
373
+ exit (1 );
374
+ }
375
+ if ('legacy ' !== $ group && self ::MODE_WEAK !== $ mode ) {
376
+ $ ref = &self ::$ deprecations [$ group ][$ msg ]['count ' ];
377
+ ++$ ref ;
378
+ $ ref = &self ::$ deprecations [$ group ][$ msg ][$ class .':: ' .$ method ];
379
+ ++$ ref ;
380
+ }
381
+ } elseif (self ::MODE_WEAK !== $ mode ) {
382
+ $ ref = &self ::$ deprecations [$ group ][$ msg ]['count ' ];
383
+ ++$ ref ;
384
+ }
385
+ ++self ::$ deprecations [$ group .'Count ' ];
386
+ }
385
387
}
0 commit comments