<?php
declare(strict_types=1);
namespace WebBundle\Handler\Locale\Rule;
use Symfony\Component\HttpFoundation\Response;
use WebBundle\Handler\Locale\MachineLocaleHandler;
abstract class AbstractRuleHandler implements RequestRuleHandlerInterface
{
protected ?RequestRuleHandlerInterface $nextHandler = null;
protected MachineLocaleHandler $machineLocaleHandler;
private static array $_models = [];
public static function getRule(MachineLocaleHandler $machineLocaleHandler): AbstractRuleHandler
{
$className = static::class;
if (!array_key_exists($className, self::$_models)) {
self::$_models[$className] = new $className(null);
self::$_models[$className]->machineLocaleHandler = $machineLocaleHandler;
}
return self::$_models[$className];
}
public function setMachineLocale(MachineLocaleHandler $machineLocaleHandler): void
{
$this->machineLocaleHandler = $machineLocaleHandler;
}
public function nextStep(RequestRuleHandlerInterface $nextHandler): RequestRuleHandlerInterface
{
$this->nextHandler = $nextHandler;
return $nextHandler;
}
public function execute(): ?Response
{
if (null === $this->nextHandler) {
return null;
}
return $this->nextHandler->execute();
}
}