<?php
namespace App\EventListener;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpFoundation\JsonResponse;
class ExceptionListener {
protected string $appEnv;
public function __construct(string $appEnv) {
$this->appEnv = $appEnv;
}
public function onKernelException(ExceptionEvent $event) {
switch ($this->appEnv) {
case 'dev':
$errors = [];
$exception = $event->getThrowable();
while ($exception) {
$errors[] = [
'message' => $exception->getMessage(),
'code' => $exception->getCode(),
'file' => $exception->getFile(),
'line' => $exception->getLine(),
//'trace' => $exception->getTrace(),
];
$exception = $exception->getPrevious();
}
break;
default:
$errors = [['message' => 'Internal error']];
}
$response = new JsonResponse(['status' => 'error', 'errors' => $errors], 500);
$event->setResponse($response);
}
}