Get exception handler based on debug

This commit is contained in:
Maarten 2024-11-25 20:23:54 +01:00
parent 2a4a422722
commit 6a280e9ab5

View file

@ -2,7 +2,12 @@
namespace Core\Exceptions;
use Core\Env\Env;
use Core\Http\Request;
use Throwable;
use Whoops\Handler\Handler;
use Whoops\Handler\JsonResponseHandler;
use Whoops\Handler\PlainTextHandler;
use Whoops\Handler\PrettyPageHandler;
use Whoops\Run as Whoops;
@ -18,13 +23,14 @@ class Exceptions
/**
* Get exceptions handler instance
*
* @param \Core\Http\Request|null $request
* @return \Whoops\Run
*/
public static function handler(): Whoops
public static function instance(Request|null $request = null): Whoops
{
if (!isset(self::$instance)) {
$instance = new Whoops();
$instance->pushHandler(new PrettyPageHandler());
$instance->pushHandler(self::handler($request));
self::$instance = $instance;
}
@ -32,14 +38,34 @@ class Exceptions
return self::$instance;
}
/**
* Get correct handler
*
* @param \Core\Http\Request|null $request
* @return \Whoops\Handler\Handler
*/
private static function handler(Request|null $request): Handler
{
if (Env::get('debug')) {
if ($request?->is('post')) {
return new JsonResponseHandler();
}
return new PrettyPageHandler();
}
return new PlainTextHandler();
}
/**
* Catch all exceptions
*
* @param \Core\Http\Request $request
* @return void
*/
public static function catch(): void
public static function catch(Request $request): void
{
self::handler()->register();
self::instance($request)->register();
}
/**
@ -50,6 +76,6 @@ class Exceptions
*/
public static function catchOne(Throwable $exception): void
{
self::handler()->handleException($exception);
self::instance()->handleException($exception);
}
}