public function __invoke(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, $next)
 {
     $container = $this->app->getContainer();
     $settings = $container['settings'];
     // Enable PrettyPageHandler with editor options
     $prettyPageHandler = new PrettyPageHandler();
     // Enable JsonResponseHandler when request is AJAX
     $jsonResponseHandler = new JsonResponseHandler();
     $jsonResponseHandler->onlyForAjaxRequests(true);
     // Add more information to the PrettyPageHandler
     $prettyPageHandler->addDataTable('Slim Application', ['Application Class' => get_class($this->app), 'Script Name' => $this->app->environment->get('SCRIPT_NAME'), 'Request URI' => $this->app->environment->get('PATH_INFO') ?: '<none>']);
     $prettyPageHandler->addDataTable('Slim Application (Request)', array('Accept Charset' => $this->app->request->getHeader('ACCEPT_CHARSET') ?: '<none>', 'Content Charset' => $this->app->request->getContentCharset() ?: '<none>', 'Path' => $this->app->request->getUri()->getPath(), 'Query String' => $this->app->request->getUri()->getQuery() ?: '<none>', 'HTTP Method' => $this->app->request->getMethod(), 'Base URL' => (string) $this->app->request->getUri(), 'Scheme' => $this->app->request->getUri()->getScheme(), 'Port' => $this->app->request->getUri()->getPort(), 'Host' => $this->app->request->getUri()->getHost()));
     // Set Whoops to default exception handler
     $whoops = new \Whoops\Run();
     $whoops->pushHandler($prettyPageHandler);
     $whoops->pushHandler($jsonResponseHandler);
     if (!empty($logger = $this->logger)) {
         $whoops->pushHandler(function ($exception, $inspector, $run) use($logger) {
             $logger->error($exception->getMessage());
         });
     }
     $whoops->register();
     // Overwrite the errorHandler
     $container['errorHandler'] = function ($c) use($whoops) {
         return function ($request, $response, $exception) use($whoops) {
             if ($exception instanceof BooBoo) {
                 // Store the BooBoo error body response in a buffer
                 ob_start();
                 BooBoo::exceptionHandler($exception);
                 $buffer = ob_get_contents();
                 ob_end_clean();
                 // By creating a new response object, all the headers set by BooBoo get resynced
                 $response = new \HTTP\Response();
                 return $response->overwrite($buffer);
             } else {
                 $handler = \Whoops\Run::EXCEPTION_HANDLER;
                 ob_start();
                 $whoops->{$handler}($exception);
                 $content = ob_get_clean();
                 $code = $exception instanceof HttpException ? $exception->getStatusCode() : 500;
                 return $response->withStatus($code)->withHeader('Content-type', 'text/html')->write($content);
             }
         };
     };
     return $next($request, $response);
 }
Beispiel #2
0
 public function __invoke(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, $next)
 {
     $container = $this->app->getContainer();
     // Overwrite the errorHandler
     $container['errorHandler'] = function ($c) {
         return function ($request, $response, $exception) {
             BooBoo::alwaysExit(false);
             // Store the BooBoo error body response in a buffer
             //ob_start();
             return BooBoo::exceptionHandler($exception);
             //$buffer = ob_get_contents();
             //ob_end_clean();
             // By creating a new response object, all the headers set by BooBoo get resynced
             //$response = new \HTTP\Response();
             //return $response->overwrite($buffer);
         };
     };
     return $next($request, $response);
 }
Beispiel #3
0
    }
    protected function getTemplates()
    {
        return ['json' => __DIR__ . '/../src/templates/json.php'];
    }
}
$logger = (new \Monolog\Logger('TEST'))->pushHandler(new \Monolog\Handler\FingersCrossedHandler(new \Monolog\Handler\StreamHandler(__DIR__ . '/log'), \Monolog\Logger::WARNING))->pushHandler(new \Monolog\Handler\FilterHandler(new \Monolog\Handler\StreamHandler(__DIR__ . '/error.log', \Monolog\Logger::DEBUG), \Monolog\Logger::DEBUG, \Monolog\Logger::NOTICE));
BooBoo::setUp($logger, true, function () {
    error_log("testing callable");
}, [E_NOTICE, E_DEPRECATED]);
//BooBoo::setUp();
//throw new Exception("FAIL");
//trigger_error("hahaha", E_USER_NOTICE);
$logger->debug("DEBBUGGINGGGGGGGGGGGGG");
$logger->notice("this will only appear in the logs when there's an error higuer or equal to a \\Monolog\\Logger::WARNING");
//$logger->warning("this will only appear in the logs when there's an error higuer or equal to a \Monolog\Logger::WARNING");
BooBoo::addVars(['userAgent' => 'mine']);
//try {
throw (new APIException(APIException::BAD_CALL))->response((new \HTTP\Response())->withStatus(400))->displayMessage("BAHAHAHAHA")->logContext(['bananas' => 'aaa'])->templateData(['a' => 'b'])->trace(false);
//} catch (\Exception $e) {
throw new \Exception('mmm');
//}
//fatal error
$a->o();
// Warning
$k = [];
echo "hey" . $k[0];
foreach ($k as $v) {
    die("got away with it");
}
/* syntax error */