/** * * @param string[] $classes */ public function parse($classes) { $config = []; foreach ($classes as $class) { $classAnnotationHolder = $this->parseClass($class); $event = new ParseEvent(ParseEvent::EVENT_CLASS_PARSED, $classAnnotationHolder, ['config' => $this->config, 'scannedConfig' => $config]); $this->eventManager->triggerEvent($event); $config = ArrayUtils::merge($config, $event->getResult()); } $finalizeEvent = new ParseEvent(ParseEvent::EVENT_FINALIZE, $config, ['config' => $this->config]); $this->eventManager->triggerEvent($finalizeEvent); $config = $finalizeEvent->getTarget(); return $config; }