nodeFactory = $nodeFactory; $this->reflectionProvider = $reflectionProvider; } /** * @param EventNameToClassAndConstant[] $eventNamesToClassConstants * @return String_|ClassConstFetch */ public function createEventName(string $eventName, array $eventNamesToClassConstants) : Node { if ($this->reflectionProvider->hasClass($eventName)) { return $this->nodeFactory->createClassConstReference($eventName); } // is string a that could be caught in constant, e.g. KernelEvents? foreach ($eventNamesToClassConstants as $eventNameToClassConstant) { if ($eventNameToClassConstant->getEventName() !== $eventName) { continue; } return $this->nodeFactory->createClassConstFetch($eventNameToClassConstant->getEventClass(), $eventNameToClassConstant->getEventConstant()); } return new String_($eventName); } }