src/Shell/SeedShell.php
protected function checkHierarchyForModule(string $moduleName, array $index) : void
    {
        if ('' === $moduleName) {
            return;
        }

        //In case the module tried to fill from a previous loop that is still in the stack return.
        //this way we prevent infinit loops when 2 or more modules are referenced by themselves or by each other in a way that they produce circles.
        if (in_array($moduleName, $this->stack)) {
            return;
        }

        //add the current module in the stack.
        $this->stack[] = $moduleName;

        //In case the module is already filled with data.
        if (in_array($moduleName, $this->modulesPolpulatedWithData)) {
            return;
        }

        //checking the case that the module do not has any relations.
        if (! empty($index[$moduleName]) && is_array($index[$moduleName])) {
            foreach ($index[$moduleName] as $relatedModule) {
                $this->checkHierarchyForModule($relatedModule, $index);
            }
        }
        $this->populateDataInModule($moduleName);

        //remove the current module from the stack.
        unset($this->stack[$moduleName]);
    }
protected function checkHierarchyForModule(string $moduleName, array $index) : void
    {
        if ('' === $moduleName) {
            return;
        }

        //In case the module tried to fill from a previous loop that is still in the stack return.
        //this way we prevent infinit loops when 2 or more modules are referenced by themselves or by each other in a way that they produce circles.
        if (in_array($moduleName, $this->stack)) {
            return;
        }

        //add the current module in the stack.
        $this->stack[] = $moduleName;

        //In case the module is already filled with data.
        if (in_array($moduleName, $this->modulesPolpulatedWithData)) {
            return;
        }

        //checking the case that the module do not has any relations.
        if (! empty($index[$moduleName]) && is_array($index[$moduleName])) {
            foreach ($index[$moduleName] as $relatedModule) {
                $this->checkHierarchyForModule($relatedModule, $index);
            }
        }
        $this->populateDataInModule($moduleName);

        //remove the current module from the stack.
        unset($this->stack[$moduleName]);
    }
protected function checkHierarchyForModule ( string $ moduleName , array $ index ) : void { if ( '' === $ moduleName ) { return ; } //In case the module tried to fill from a previous loop that is still in the stack return. //this way we prevent infinit loops when 2 or more modules are referenced by themselves or by each other in a way that they produce circles. if ( in_array ( $ moduleName , $ this -> stack ) ) { return ; } //add the current module in the stack. $ this -> stack [ ] = $ moduleName ; //In case the module is already filled with data. if ( in_array ( $ moduleName , $ this -> modulesPolpulatedWithData ) ) { return ; } //checking the case that the module do not has any relations. if ( ! empty ( $ index [ $ moduleName ] ) && is_array ( $ index [ $ moduleName ] ) ) { foreach ( $ index [ $ moduleName ] as $ relatedModule ) { $ this -> checkHierarchyForModule ( $ relatedModule , $ index ) ; } } $ this -> populateDataInModule ( $ moduleName ) ; //remove the current module from the stack. unset ( $ this -> stack [ $ moduleName ] ) ; }
Check the hierarchy for each module recursively and populate data.

@param string $moduleName module name.
@param mixed[] $index index.
@return void
Check the hierarchy for each module recursively and populate data .