Files
michaelschiemer/src/Framework/ExceptionHandling/Strategy/LenientPolicy.php

46 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Framework\ExceptionHandling\Strategy;
use App\Framework\ExceptionHandling\ErrorContext;
use App\Framework\ExceptionHandling\ErrorDecision;
use App\Framework\ExceptionHandling\ErrorHandlerStrategy;
use App\Framework\Logging\Logger;
use App\Framework\Logging\ValueObjects\LogContext;
use ErrorException;
final readonly class LenientPolicy implements ErrorHandlerStrategy
{
public function __construct(private Logger $logger)
{
}
public function handle(ErrorContext $context): ErrorDecision
{
if($context->isDeprecation()) {
$this->logger->notice("[Deprecation] {$context->message}",
LogContext::withData(
[
'file' => $context->file,
'line' => $context->line]
));
return ErrorDecision::HANDLED;
}
if($context->isFatal()) {
throw new ErrorException(
$context->message,
0,
$context->severity,
$context->file,
$context->line
);
}
return ErrorDecision::DEFER;
}
}