public static function call($callable /*, ...$parameters */)
    {
        try {
            self::suppress();
            $result = call_user_func_array($callable, array_slice(func_get_args(), 1));
            self::restore();

            return $result;
        } catch (\Exception $e) {
            // Use a finally block for this when requirements are raised to PHP 5.5
            self::restore();
            throw $e;
        }
    }
public static function call($callable /*, ...$parameters */)
    {
        try {
            self::suppress();
            $result = call_user_func_array($callable, array_slice(func_get_args(), 1));
            self::restore();

            return $result;
        } catch (\Exception $e) {
            // Use a finally block for this when requirements are raised to PHP 5.5
            self::restore();
            throw $e;
        }
    }
public static function call ( $ callable /*, ...$parameters */ ) { try { self :: suppress ( ) ; $ result = call_user_func_array ( $ callable , array_slice ( func_get_args ( ) , 1 ) ) ; self :: restore ( ) ; return $ result ; } catch ( \ Exception $ e ) { // Use a finally block for this when requirements are raised to PHP 5.5 self :: restore ( ) ; throw $ e ; } }
Calls a specified function while silencing warnings and below.

Future improvement: when PHP requirements are raised add Callable type hint (5.4) and variadic parameters (5.6)

@param  callable   $callable Function to execute.
@throws \Exception Any exceptions from the callback are rethrown.
@return mixed      Return value of the callback.
Calls a specified function while silencing warnings and below .