config->get('async_discovery', true); $srcDir = $this->pathProvider->getSourcePath(); // Discovery erstellen $discoveryFactory = new DiscoveryFactory(); $discovery = $discoveryFactory->create($useAsyncDiscovery, $srcDir); // Attribute-Processor-Registry initialisieren $processorRegistry = $this->createProcessorRegistry(); // Attribute entdecken $results = $discovery->discover($srcDir); // Alle Attribute verarbeiten return $processorRegistry->processAll($results); } /** * Erstellt und konfiguriert die AttributeProcessorRegistry */ private function createProcessorRegistry(): AttributeProcessorRegistry { $processorRegistry = new AttributeProcessorRegistry($this->container); // Mapper registrieren $this->registerMappers($processorRegistry); // Compiler registrieren $this->registerCompilers($processorRegistry); return $processorRegistry; } /** * Registriert alle AttributeMapper */ private function registerMappers(AttributeProcessorRegistry $registry): void { $registry ->registerMapper(RouteMapper::class) ->registerMapper(CommandHandlerMapper::class) ->registerMapper(\App\Framework\Core\Events\EventHandlerMapper::class) ->registerMapper(\App\Framework\EventBus\EventHandlerMapper::class) ->registerMapper(QueryHandlerMapper::class) ->registerMapper(ConsoleCommandMapper::class) ->registerMapper(AuthMapper::class) ->registerMapper(InitializerMapper::class); // Hier können weitere Mapper registriert werden } /** * Registriert alle AttributeCompiler */ private function registerCompilers(AttributeProcessorRegistry $registry): void { $registry ->registerCompiler(RouteCompiler::class) ->registerCompiler(CommandHandlerCompiler::class) ->registerCompiler(\App\Framework\Core\Events\EventHandlerCompiler::class) ->registerCompiler(\App\Framework\EventBus\EventHandlerCompiler::class) ->registerCompiler(QueryHandlerCompiler::class); // Hier können weitere Compiler registriert werden } }