public function getNamespaceDefinition() {
        $namespaceDefinition = $this instanceof NamespaceDefinition
            ? $this
            : $this->getFirstAncestor(NamespaceDefinition::class, SourceFileNode::class);

        if ($namespaceDefinition instanceof NamespaceDefinition && !($namespaceDefinition->parent instanceof SourceFileNode)) {
            $namespaceDefinition = $namespaceDefinition->getFirstAncestor(SourceFileNode::class);
        }

        if ($namespaceDefinition === null) {
            // TODO provide a way to throw errors without crashing consumer
            throw new \Exception("Invalid tree - SourceFileNode must always exist at root of tree.");
        }

        $fullStart = $this->getFullStart();
        $lastNamespaceDefinition = null;
        if ($namespaceDefinition instanceof SourceFileNode) {
            foreach ($namespaceDefinition->getChildNodes() as $childNode) {
                if ($childNode instanceof NamespaceDefinition && $childNode->getFullStart() < $fullStart) {
                    $lastNamespaceDefinition = $childNode;
                }
            }
        }

        if ($lastNamespaceDefinition !== null && $lastNamespaceDefinition->compoundStatementOrSemicolon instanceof Token) {
            $namespaceDefinition = $lastNamespaceDefinition;
        } elseif ($namespaceDefinition instanceof SourceFileNode) {
            $namespaceDefinition = null;
        }

        return $namespaceDefinition;
    }
public function getNamespaceDefinition() {
        $namespaceDefinition = $this instanceof NamespaceDefinition
            ? $this
            : $this->getFirstAncestor(NamespaceDefinition::class, SourceFileNode::class);

        if ($namespaceDefinition instanceof NamespaceDefinition && !($namespaceDefinition->parent instanceof SourceFileNode)) {
            $namespaceDefinition = $namespaceDefinition->getFirstAncestor(SourceFileNode::class);
        }

        if ($namespaceDefinition === null) {
            // TODO provide a way to throw errors without crashing consumer
            throw new \Exception("Invalid tree - SourceFileNode must always exist at root of tree.");
        }

        $fullStart = $this->getFullStart();
        $lastNamespaceDefinition = null;
        if ($namespaceDefinition instanceof SourceFileNode) {
            foreach ($namespaceDefinition->getChildNodes() as $childNode) {
                if ($childNode instanceof NamespaceDefinition && $childNode->getFullStart() < $fullStart) {
                    $lastNamespaceDefinition = $childNode;
                }
            }
        }

        if ($lastNamespaceDefinition !== null && $lastNamespaceDefinition->compoundStatementOrSemicolon instanceof Token) {
            $namespaceDefinition = $lastNamespaceDefinition;
        } elseif ($namespaceDefinition instanceof SourceFileNode) {
            $namespaceDefinition = null;
        }

        return $namespaceDefinition;
    }
public function getNamespaceDefinition ( ) { $ namespaceDefinition = $ this instanceof NamespaceDefinition ? $ this : $ this -> getFirstAncestor ( NamespaceDefinition :: class , SourceFileNode :: class ) ; if ( $ namespaceDefinition instanceof NamespaceDefinition && ! ( $ namespaceDefinition -> parent instanceof SourceFileNode ) ) { $ namespaceDefinition = $ namespaceDefinition -> getFirstAncestor ( SourceFileNode :: class ) ; } if ( $ namespaceDefinition === null ) { // TODO provide a way to throw errors without crashing consumer throw new \ Exception ( "Invalid tree - SourceFileNode must always exist at root of tree." ) ; } $ fullStart = $ this -> getFullStart ( ) ; $ lastNamespaceDefinition = null ; if ( $ namespaceDefinition instanceof SourceFileNode ) { foreach ( $ namespaceDefinition -> getChildNodes ( ) as $ childNode ) { if ( $ childNode instanceof NamespaceDefinition && $ childNode -> getFullStart ( ) < $ fullStart ) { $ lastNamespaceDefinition = $ childNode ; } } } if ( $ lastNamespaceDefinition !== null && $ lastNamespaceDefinition -> compoundStatementOrSemicolon instanceof Token ) { $ namespaceDefinition = $ lastNamespaceDefinition ; } elseif ( $ namespaceDefinition instanceof SourceFileNode ) { $ namespaceDefinition = null ; } return $ namespaceDefinition ; }
Gets corresponding NamespaceDefinition for Node. Returns null if in global namespace.

@return NamespaceDefinition|null
Gets corresponding NamespaceDefinition for Node . Returns null if in global namespace .