2015-08-17 17:00:26 -07:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Component\Debug ;
/**
* Registers all the debug tools .
*
* @ author Fabien Potencier < fabien @ symfony . com >
*/
class Debug
{
private static $enabled = false ;
/**
* Enables the debug tools .
*
2018-11-23 12:29:20 +00:00
* This method registers an error handler , an exception handler and a special class loader .
2015-08-17 17:00:26 -07:00
*
* @ param int $errorReportingLevel The level of error reporting you want
* @ param bool $displayErrors Whether to display errors ( for development ) or just log them ( for production )
*/
2018-11-23 12:29:20 +00:00
public static function enable ( $errorReportingLevel = E_ALL , $displayErrors = true )
2015-08-17 17:00:26 -07:00
{
if ( static :: $enabled ) {
return ;
}
static :: $enabled = true ;
if ( null !== $errorReportingLevel ) {
error_reporting ( $errorReportingLevel );
} else {
2018-11-23 12:29:20 +00:00
error_reporting ( E_ALL );
2015-08-17 17:00:26 -07:00
}
2018-11-23 12:29:20 +00:00
if ( ! \in_array ( \PHP_SAPI , array ( 'cli' , 'phpdbg' ), true )) {
2015-08-17 17:00:26 -07:00
ini_set ( 'display_errors' , 0 );
ExceptionHandler :: register ();
2018-11-23 12:29:20 +00:00
} elseif ( $displayErrors && ( ! filter_var ( ini_get ( 'log_errors' ), FILTER_VALIDATE_BOOLEAN ) || ini_get ( 'error_log' ))) {
2015-08-17 17:00:26 -07:00
// CLI - display errors only if they're not already logged to STDERR
ini_set ( 'display_errors' , 1 );
}
2017-02-02 16:28:38 -08:00
if ( $displayErrors ) {
ErrorHandler :: register ( new ErrorHandler ( new BufferingLogger ()));
} else {
ErrorHandler :: register () -> throwAt ( 0 , true );
2015-08-17 17:00:26 -07:00
}
DebugClassLoader :: enable ();
}
}