<?php declare(strict_types=1); namespace Xentral\Modules\SystemMailer; use Xentral\Core\DependencyInjection\ServiceContainer; use Xentral\Modules\SystemMailer\Service\EmailAccountGateway; use Xentral\Modules\SystemMailer\Service\MailBodyCleaner; use Xentral\Modules\SystemMailer\Service\MailerTransportFactory; use Xentral\Modules\SystemMailer\Service\MailLogService; final class Bootstrap { /** * @return array */ public static function registerServices(): array { return [ 'SystemMailer' => 'onInitMailer', 'MailLogService' => 'onInitMailLogService', 'MailerTransportFactory' => 'onInitMailerTransportFactory', 'EmailAccountGateway' => 'onInitEmailAccountGateway', ]; } /** * @param ServiceContainer $container * * @return SystemMailer */ public static function onInitMailer(ServiceContainer $container): SystemMailer { return new SystemMailer( $container->get('MailerTransportFactory'), $container->get('EmailAccountGateway'), $container->get('MailLogService'), new MailBodyCleaner() ); } /** * @param ServiceContainer $container * * @return MailLogService */ public static function onInitMailLogService(ServiceContainer $container): MailLogService { return new MailLogService($container->get('Database')); } /** * @param ServiceContainer $container * * @return EmailAccountGateway */ public static function onInitEmailAccountGateway(ServiceContainer $container): EmailAccountGateway { return new EmailAccountGateway($container->get('Database')); } /** * @param ServiceContainer $container * * @return MailerTransportFactory */ public static function onInitMailerTransportFactory(ServiceContainer $container): MailerTransportFactory { return new MailerTransportFactory($container); } }