. */ namespace SP\Core\Definitions; use function DI\autowire; /** * Class DomainDefinitions */ final class DomainDefinitions { private const DOMAINS = [ 'Account', 'Api', 'Auth', 'Category', 'Client', 'Config', 'Crypt', 'CustomField', 'Export', 'Import', 'Install', 'ItemPreset', 'Notification', 'Plugins', 'Security', 'Tag', 'User', ]; private const PORTS = [ 'Service' => 'SP\Domain\%s\Services', 'Repository' => 'SP\Infrastructure\%s\Repositories', 'Adapter' => 'SP\Domain\%s\Adapters' ]; public static function getDefinitions(): array { $sources = []; foreach (self::DOMAINS as $domain) { foreach (self::PORTS as $suffix => $target) { $key = sprintf('SP\Domain\%s\Ports\*%s', $domain, $suffix); $sources[$key] = autowire(sprintf($target, $domain)); } } return [ ...$sources ]; } }