ApiGen\Generator\Resolvers\ElementResolver::resolveElement PHP Метод

resolveElement() публичный Метод

public resolveElement ( $definition, $reflectionElement, &$expectedName = null )
    public function resolveElement($definition, $reflectionElement, &$expectedName = null)
    {
        if ($this->isSimpleType($definition)) {
            return null;
        }
        $originalContext = $reflectionElement;
        $reflectionElement = $this->correctContextForParameterOrClassMember($reflectionElement);
        if ($reflectionElement === null) {
            return null;
        }
        // self, static, $this references
        if ($definition === 'self' || $definition === 'static' || $definition === '$this') {
            return $reflectionElement instanceof ClassReflectionInterface ? $reflectionElement : null;
        }
        $definitionBase = substr($definition, 0, strcspn($definition, '\\:'));
        $namespaceAliases = $reflectionElement->getNamespaceAliases();
        $className = Resolver::resolveClassFqn($definition, $namespaceAliases, $reflectionElement->getNamespaceName());
        if ($resolved = $this->resolveIfParsed($definition, $reflectionElement)) {
            return $resolved;
        }
        if (!empty($definitionBase) && isset($namespaceAliases[$definitionBase]) && $definition !== $className) {
            // Aliased class
            $expectedName = $className;
            if (strpos($className, ':') === false) {
                return $this->getClass($className, $reflectionElement->getNamespaceName());
            } else {
                $definition = $className;
            }
        }
        if ($reflectionElement instanceof ClassReflectionInterface && ($pos = strpos($definition, '::') || ($pos = strpos($definition, '->')))) {
            $reflectionElement = $this->resolveContextForClassProperty($definition, $reflectionElement, $pos);
            $definition = substr($definition, $pos + 2);
        } elseif ($originalContext instanceof ParameterReflectionInterface) {
            return null;
        }
        if (!$this->isContextUsable($reflectionElement)) {
            return null;
        }
        return $this->resolveIfInContext($definition, $reflectionElement);
    }

Usage Example

 /**
  * @param string $definition
  * @param ReflectionElement $context
  * @param NULL $expectedName
  * @return ReflectionElement|bool|NULL
  */
 public function resolveElement($definition, $context, &$expectedName = NULL)
 {
     $reflection = $this->elementResolver->resolveElement($definition, $context, $expectedName);
     if ($reflection) {
         return $reflection;
     }
     return FALSE;
 }
All Usage Examples Of ApiGen\Generator\Resolvers\ElementResolver::resolveElement