Neos.Fusion/Classes/Core/Parser.php
protected function buildPrototypeHierarchy()
    {
        if (!isset($this->objectTree['__prototypes'])) {
            return;
        }

        foreach ($this->objectTree['__prototypes'] as $prototypeName => $prototypeConfiguration) {
            $prototypeInheritanceHierarchy = [];
            $currentPrototypeName = $prototypeName;
            while (isset($this->objectTree['__prototypes'][$currentPrototypeName]['__prototypeObjectName'])) {
                $currentPrototypeName = $this->objectTree['__prototypes'][$currentPrototypeName]['__prototypeObjectName'];
                array_unshift($prototypeInheritanceHierarchy, $currentPrototypeName);
                if ($prototypeName === $currentPrototypeName) {
                    throw new Fusion\Exception(sprintf('Recursive inheritance found for prototype "%s". Prototype chain: %s', $prototypeName, implode(' < ', array_reverse($prototypeInheritanceHierarchy))), 1492801503);
                }
            }

            if (count($prototypeInheritanceHierarchy)) {
                // prototype chain from most *general* to most *specific* WITHOUT the current node type!
                $this->objectTree['__prototypes'][$prototypeName]['__prototypeChain'] = $prototypeInheritanceHierarchy;
            }
        }
    }
protected function buildPrototypeHierarchy()
    {
        if (!isset($this->objectTree['__prototypes'])) {
            return;
        }

        foreach ($this->objectTree['__prototypes'] as $prototypeName => $prototypeConfiguration) {
            $prototypeInheritanceHierarchy = [];
            $currentPrototypeName = $prototypeName;
            while (isset($this->objectTree['__prototypes'][$currentPrototypeName]['__prototypeObjectName'])) {
                $currentPrototypeName = $this->objectTree['__prototypes'][$currentPrototypeName]['__prototypeObjectName'];
                array_unshift($prototypeInheritanceHierarchy, $currentPrototypeName);
                if ($prototypeName === $currentPrototypeName) {
                    throw new Fusion\Exception(sprintf('Recursive inheritance found for prototype "%s". Prototype chain: %s', $prototypeName, implode(' < ', array_reverse($prototypeInheritanceHierarchy))), 1492801503);
                }
            }

            if (count($prototypeInheritanceHierarchy)) {
                // prototype chain from most *general* to most *specific* WITHOUT the current node type!
                $this->objectTree['__prototypes'][$prototypeName]['__prototypeChain'] = $prototypeInheritanceHierarchy;
            }
        }
    }
protected function buildPrototypeHierarchy ( ) { if ( ! isset ( $ this -> objectTree [ '__prototypes' ] ) ) { return ; } foreach ( $ this -> objectTree [ '__prototypes' ] as $ prototypeName => $ prototypeConfiguration ) { $ prototypeInheritanceHierarchy = [ ] ; $ currentPrototypeName = $ prototypeName ; while ( isset ( $ this -> objectTree [ '__prototypes' ] [ $ currentPrototypeName ] [ '__prototypeObjectName' ] ) ) { $ currentPrototypeName = $ this -> objectTree [ '__prototypes' ] [ $ currentPrototypeName ] [ '__prototypeObjectName' ] ; array_unshift ( $ prototypeInheritanceHierarchy , $ currentPrototypeName ) ; if ( $ prototypeName === $ currentPrototypeName ) { throw new Fusion \ Exception ( sprintf ( 'Recursive inheritance found for prototype "%s". Prototype chain: %s' , $ prototypeName , implode ( ' < ' , array_reverse ( $ prototypeInheritanceHierarchy ) ) ) , 1492801503 ) ; } } if ( count ( $ prototypeInheritanceHierarchy ) ) { // prototype chain from most *general* to most *specific* WITHOUT the current node type! $ this -> objectTree [ '__prototypes' ] [ $ prototypeName ] [ '__prototypeChain' ] = $ prototypeInheritanceHierarchy ; } } }
Precalculate merged configuration for inherited prototypes.

@return void
@throws Fusion\Exception
Precalculate merged configuration for inherited prototypes .