Neos\Flow\Persistence\Doctrine\Mapping\Driver\FlowAnnotationDriver::evaluateEntityListenersAnnotation PHP Метод

evaluateEntityListenersAnnotation() защищенный Метод

Evaluate the EntityListeners annotation and amend the metadata accordingly.
protected evaluateEntityListenersAnnotation ( ReflectionClass $class, Doctrine\ORM\Mapping\ClassMetadata $metadata, array $classAnnotations ) : void
$class ReflectionClass
$metadata Doctrine\ORM\Mapping\ClassMetadata
$classAnnotations array
Результат void
    protected function evaluateEntityListenersAnnotation(\ReflectionClass $class, ORM\ClassMetadata $metadata, array $classAnnotations)
    {
        if (isset($classAnnotations[ORM\EntityListeners::class])) {
            $entityListenersAnnotation = $classAnnotations[ORM\EntityListeners::class];
            foreach ($entityListenersAnnotation->value as $item) {
                $listenerClassName = $metadata->fullyQualifiedClassName($item);
                if (!class_exists($listenerClassName)) {
                    throw ORM\MappingException::entityListenerClassNotFound($listenerClassName, $class->getName());
                }
                $hasMapping = false;
                foreach ($class->getMethods() as $method) {
                    if ($method->isPublic()) {
                        // find method callbacks.
                        $callbacks = $this->getMethodCallbacks($method);
                        $hasMapping = $hasMapping ?: !empty($callbacks);
                        foreach ($callbacks as $value) {
                            $metadata->addEntityListener($value[1], $listenerClassName, $value[0]);
                        }
                    }
                }
                // Evaluate the listener using naming convention.
                if ($hasMapping === false) {
                    EntityListenerBuilder::bindEntityListener($metadata, $listenerClassName);
                }
            }
        }
    }