19
19
class DeprecationErrorHandler
20
20
{
21
21
const MODE_WEAK = 'weak ' ;
22
+ const MODE_DISABLED = 'disabled ' ;
22
23
23
24
private static $ isRegistered = false ;
24
25
@@ -39,9 +40,23 @@ public static function register($mode = 0)
39
40
if (self ::$ isRegistered ) {
40
41
return ;
41
42
}
42
- if (self ::MODE_WEAK !== $ mode && (!isset ($ mode [0 ]) || '/ ' !== $ mode [0 ])) {
43
- $ mode = preg_match ('/^[1-9][0-9]*$/ ' , $ mode ) ? (int ) $ mode : 0 ;
44
- }
43
+
44
+ $ mode = function () use ($ mode ) {
45
+ static $ memoizedMode = false ;
46
+
47
+ if (false !== $ memoizedMode ) {
48
+ return $ memoizedMode ;
49
+ }
50
+ if (false === $ mode ) {
51
+ $ mode = getenv ('SYMFONY_DEPRECATIONS_HELPER ' );
52
+ }
53
+ if (DeprecationErrorHandler::MODE_WEAK !== $ mode && (!isset ($ mode [0 ]) || '/ ' !== $ mode [0 ])) {
54
+ $ mode = preg_match ('/^[1-9][0-9]*$/ ' , $ mode ) ? (int ) $ mode : 0 ;
55
+ }
56
+
57
+ return $ memoizedMode = $ mode ;
58
+ };
59
+
45
60
$ deprecations = array (
46
61
'unsilencedCount ' => 0 ,
47
62
'remainingCount ' => 0 ,
@@ -53,7 +68,7 @@ public static function register($mode = 0)
53
68
'other ' => array (),
54
69
);
55
70
$ deprecationHandler = function ($ type , $ msg , $ file , $ line , $ context ) use (&$ deprecations , $ mode ) {
56
- if (E_USER_DEPRECATED !== $ type ) {
71
+ if (E_USER_DEPRECATED !== $ type || DeprecationErrorHandler:: MODE_DISABLED === $ mode = $ mode () ) {
57
72
return \PHPUnit_Util_ErrorHandler::handleError ($ type , $ msg , $ file , $ line , $ context );
58
73
}
59
74
@@ -95,13 +110,13 @@ public static function register($mode = 0)
95
110
96
111
exit (1 );
97
112
}
98
- if ('legacy ' !== $ group && self ::MODE_WEAK !== $ mode ) {
113
+ if ('legacy ' !== $ group && DeprecationErrorHandler ::MODE_WEAK !== $ mode ) {
99
114
$ ref = &$ deprecations [$ group ][$ msg ]['count ' ];
100
115
++$ ref ;
101
116
$ ref = &$ deprecations [$ group ][$ msg ][$ class .':: ' .$ method ];
102
117
++$ ref ;
103
118
}
104
- } else {
119
+ } elseif (DeprecationErrorHandler:: MODE_WEAK !== $ mode ) {
105
120
$ group = 'other ' ;
106
121
$ ref = &$ deprecations [$ group ][$ msg ]['count ' ];
107
122
++$ ref ;
@@ -116,7 +131,7 @@ public static function register($mode = 0)
116
131
restore_error_handler ();
117
132
self ::register ($ mode );
118
133
}
119
- } elseif (! isset ( $ mode [ 0 ]) || ' / ' !== $ mode [ 0 ]) {
134
+ } else {
120
135
self ::$ isRegistered = true ;
121
136
if (self ::hasColorSupport ()) {
122
137
$ colorize = function ($ str , $ red ) {
@@ -128,9 +143,16 @@ public static function register($mode = 0)
128
143
$ colorize = function ($ str ) {return $ str ;};
129
144
}
130
145
register_shutdown_function (function () use ($ mode , &$ deprecations , $ deprecationHandler , $ colorize ) {
146
+ $ mode = $ mode ();
147
+ if (isset ($ mode [0 ]) && '/ ' === $ mode [0 ]) {
148
+ return ;
149
+ }
131
150
$ currErrorHandler = set_error_handler ('var_dump ' );
132
151
restore_error_handler ();
133
152
153
+ if (DeprecationErrorHandler::MODE_WEAK === $ mode ) {
154
+ $ colorize = function ($ str ) {return $ str ;};
155
+ }
134
156
if ($ currErrorHandler !== $ deprecationHandler ) {
135
157
echo "\n" , $ colorize ('THE ERROR HANDLER HAS CHANGED! ' , true ), "\n" ;
136
158
}
0 commit comments