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); }
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); }
} 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 */