1919class DeprecationErrorHandler
2020{
2121 const MODE_WEAK = 'weak ' ;
22+ const MODE_DISABLED = 'disabled ' ;
2223
2324 private static $ isRegistered = false ;
2425
@@ -39,9 +40,23 @@ public static function register($mode = 0)
3940 if (self ::$ isRegistered ) {
4041 return ;
4142 }
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+
4560 $ deprecations = array (
4661 'unsilencedCount ' => 0 ,
4762 'remainingCount ' => 0 ,
@@ -53,7 +68,7 @@ public static function register($mode = 0)
5368 'other ' => array (),
5469 );
5570 $ 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 () ) {
5772 return \PHPUnit_Util_ErrorHandler::handleError ($ type , $ msg , $ file , $ line , $ context );
5873 }
5974
@@ -95,13 +110,13 @@ public static function register($mode = 0)
95110
96111 exit (1 );
97112 }
98- if ('legacy ' !== $ group && self ::MODE_WEAK !== $ mode ) {
113+ if ('legacy ' !== $ group && DeprecationErrorHandler ::MODE_WEAK !== $ mode ) {
99114 $ ref = &$ deprecations [$ group ][$ msg ]['count ' ];
100115 ++$ ref ;
101116 $ ref = &$ deprecations [$ group ][$ msg ][$ class .':: ' .$ method ];
102117 ++$ ref ;
103118 }
104- } else {
119+ } elseif (DeprecationErrorHandler:: MODE_WEAK !== $ mode ) {
105120 $ group = 'other ' ;
106121 $ ref = &$ deprecations [$ group ][$ msg ]['count ' ];
107122 ++$ ref ;
@@ -116,7 +131,7 @@ public static function register($mode = 0)
116131 restore_error_handler ();
117132 self ::register ($ mode );
118133 }
119- } elseif (! isset ( $ mode [ 0 ]) || ' / ' !== $ mode [ 0 ]) {
134+ } else {
120135 self ::$ isRegistered = true ;
121136 if (self ::hasColorSupport ()) {
122137 $ colorize = function ($ str , $ red ) {
@@ -128,9 +143,16 @@ public static function register($mode = 0)
128143 $ colorize = function ($ str ) {return $ str ;};
129144 }
130145 register_shutdown_function (function () use ($ mode , &$ deprecations , $ deprecationHandler , $ colorize ) {
146+ $ mode = $ mode ();
147+ if (isset ($ mode [0 ]) && '/ ' === $ mode [0 ]) {
148+ return ;
149+ }
131150 $ currErrorHandler = set_error_handler ('var_dump ' );
132151 restore_error_handler ();
133152
153+ if (DeprecationErrorHandler::MODE_WEAK === $ mode ) {
154+ $ colorize = function ($ str ) {return $ str ;};
155+ }
134156 if ($ currErrorHandler !== $ deprecationHandler ) {
135157 echo "\n" , $ colorize ('THE ERROR HANDLER HAS CHANGED! ' , true ), "\n" ;
136158 }
0 commit comments