<?php declare(strict_types=1); namespace Xentral\Modules\Log; use Xentral\Core\DependencyInjection\ContainerInterface; use Xentral\Core\DependencyInjection\ServiceContainer; use Xentral\Modules\Log\Service\DatabaseLogGateway; use Xentral\Modules\Log\Service\DatabaseLogService; use Xentral\Modules\Log\Service\LoggerConfigService; use Xentral\Modules\Log\Wrapper\CompanyConfigWrapper; final class Bootstrap { /** * @return array */ public static function registerServices(): array { return [ 'DatabaseLogService' => 'onInitDatabaseLogService', 'DatabaseLogGateway' => 'onInitDatabaseLogGateway', 'LoggerConfigService' => 'onInitLoggerConfigService', ]; } /** * @param ServiceContainer $container * * @return DatabaseLogService */ public static function onInitDatabaseLogService(ServiceContainer $container): DatabaseLogService { return new DatabaseLogService($container->get('Database')); } /** * @param ServiceContainer $container * * @return DatabaseLogGateway */ public static function onInitDatabaseLogGateway(ServiceContainer $container): DatabaseLogGateway { return new DatabaseLogGateway($container->get('Database')); } /** * @param ServiceContainer $container * * @return LoggerConfigService */ public static function onInitLoggerConfigService(ServiceContainer $container): LoggerConfigService { return new LoggerConfigService(self::onInitCompanyConfigWrapper($container)); } /** * @param ContainerInterface $container * * @return CompanyConfigWrapper */ private static function onInitCompanyConfigWrapper(ContainerInterface $container): CompanyConfigWrapper { /** @var \ApplicationCore $app */ $app = $container->get('LegacyApplication'); return new CompanyConfigWrapper($app->erp); } }