<?phpnamespace App\Service;use App\Form\DataTransformer\DataTransformerRetriever;use App\Library\EnvManager;use App\Service\CashbackTransaction\CashbackTransactionService;use App\Service\Client\ClientService;use Doctrine\ORM\EntityManagerInterface;use Symfony\Component\DependencyInjection\ContainerInterface;use Symfony\Component\Form\FormFactory;use Symfony\Component\Security\Core\Security;class ServiceRetriever{ private $services = []; /** * @var self */ private static $INSTANCE; /** * @var ContainerInterface */ private $container; /** * @var ClientService */ private $clientService; /** * @var InkassService */ private $inkassService; /** * @var MachineService */ private $machineService; /** * @var CompanyService */ private $companyService; /** * @var SessionService */ private $sessionService; /** * @var RouteService */ private $routeService; /** * @var EnvManager */ private $envManager; /** * @var EntityManagerInterface */ private $em; /** * @var PromoCodeService */ private $promoCodeService; /** * @var CarWashService */ private $carWashService; /** * @var KktService */ private $kktService; /** * @var \Symfony\Component\Security\Core\Security */ private $security; /** * @var ClientNotificationService */ private $clientNotificationService; /** * @var ClientNotificationReplyService */ private $clientNotificationReplyService; /** * @var AccessTokenService */ private $accessTokenService; /** * @var CityService */ private $cityService; /** * @var DataTransformerRetriever */ private $dataTransformerRetriever; /** * @var AuthorizationService */ private $authorizationService; /** * @var StoryService */ private $storyService; /** * @var ClientTransactionService */ private $clientTransactionService; /** * @var CashbackTransactionService */ private $cashbackTransactionService; /** * @var EntityViewService */ private $entityViewService; /** * @var FrontEndPreprocessorRetriever */ private $frontEndPreprocessorRetriever; /** * @var InvoiceSevice */ private $invoiceService; public function __construct(ContainerInterface $container, Security $security) { $this->container = $container; $this->security = $security; } public static function setInstance(self $instance): void { self::$INSTANCE = $instance; } public static function getInstance(): self { return self::$INSTANCE; } public function getCityService(): CityService { if (!$this->cityService) { $this->cityService = $this->container->get(CityService::class); } return $this->cityService; } public function getRouteService(): RouteService { if (!$this->routeService) { $this->routeService = $this->container->get(RouteService::class); } return $this->routeService; } public function getDataTransformerRetriever(): DataTransformerRetriever { if (!$this->dataTransformerRetriever) { $this->dataTransformerRetriever = $this->container->get(DataTransformerRetriever::class); } return $this->dataTransformerRetriever; } public function getEm(): EntityManagerInterface { if (!$this->em) { $this->em = $this->container->get("doctrine.orm.entity_manager"); } return $this->em; } public function getSecurity(): \Symfony\Component\Security\Core\Security { return $this->security; } public function getService(string $class) { if (isset($this->services[$class])) { return $this->services[$class]; } $this->services[$class] = $this->container->get($class); return $this->services[$class]; } public function getFormFactory(): FormFactory { return $this->container->get('form.factory'); }}