46 lines
1.2 KiB
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;
|
|
}
|
|
}
|