Re: erorr_reporting() and @ operator

From: Date: Wed, 02 Dec 2020 14:55:55 +0000
Subject: Re: erorr_reporting() and @ operator
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-112374@lists.php.net to get a copy of this message
On Wed, Dec 2, 2020 at 3:14 PM Benjamin Morel <benjamin.morel@gmail.com> wrote: > Thanks for the pointer, Nikita. > > I think the updated example (using error_reporting() & > $errno) fails to > mimic exactly what error_reporting() === 0 did, though. > > Say your php.ini mutes E_WARNING, for example: > > error_reporting = E_ALL & ~E_WARNING > > Checking for error_reporting() === 0 allowed to only ignore > @-suppressed > statements, but still throw an exception on E_WARNING, ignoring the > error_reporting set in php.ini. > > OTOH, checking for error_reporting() & $errno still allows > to > ignore @-suppressed statements, but **also ignores E_WARNING configured in > php.ini**, which is not always what userland code wants. > > I'm not sure how userland code can now replicate the old behaviour, i.e. > specifically detect the @ operator? > First off: Please don't do this. Error_reporting should be respected independently of how it was set. Now, if you do want to approximately distinguish @, you can do it the same way you did before: Check for the value it sets. Previously that was 0 (which you also couldn't distinguish from error_reporting=0 set in php.ini). Now it will be E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE, or whatever that evaluates to. Regards, Nikita

« previous php.internals (#112374) next »