private function walkClassHierarchy(ClassType $classType, &$expressions) { $parentClass = $classType->getParentClass(); if ($parentClass) { $this->walkClassHierarchy($parentClass, $expressions); } $annotation = $classType->getAnnotation('Security'); if ($annotation) { if (!is_string($annotation)) { throw new \InvalidArgumentException('Security annotation must be simple string with expression.'); } $expressions[] = new Expression($annotation); } }
/** * Try to find entity class in possible NS * * @param class $className * @param object $entity * @return null|string */ private function findEntityWholeName($className, $entity) { $existingClass = NULL; // try to locate class in this namespace if (!class_exists($className)) { // try to find in namespace of entity $reflection = new ClassType($entity); $existingClass = $reflection->getNamespaceName() . "\\" . $className; // try to locate in parents namespace (recursive) if (!class_exists($existingClass)) { $parentClass = $reflection->getParentClass(); while ($parentClass !== NULL) { $existingClass = $reflection->getParentClass()->getNamespaceName() . "\\" . $className; // not found try to find in parent namespace if (!class_exists($existingClass)) { $rc = new ClassType($parentClass); $parentClass = $rc->getParentClass(); $existingClass = NULL; } else { $parentClass = NULL; } } } } else { $existingClass = $className; } return $existingClass; }