Kraken\Container\Service\ServiceSorter::orderResource PHP Method

orderResource() private method

private orderResource ( string $resourceName, &$localStack = [] ) : string[]
$resourceName string
return string[]
    private function orderResource($resourceName, &$localStack = [])
    {
        $providerName = isset($this->obtainableIn[$resourceName]) ? $this->obtainableIn[$resourceName] : null;
        if ($providerName === null) {
            throw new ResourceUndefinedException("One of service providers could not be ordered because of undefined resource [{$resourceName}].");
        }
        if (isset($this->ordered[$resourceName])) {
            return [];
        }
        if (isset($localStack[$resourceName])) {
            throw new OverflowException("Service {$providerName} could not be ordered because of circular dependency to resource [{$resourceName}].");
        }
        $reqs = $this->reqs[$providerName];
        $pvds = $this->pvds[$providerName];
        $localOrder = [];
        $localStack[$resourceName] = true;
        foreach ($reqs as $resourceReq) {
            $localOrder = array_merge($localOrder, $this->orderResource($resourceReq, $localStack));
        }
        foreach ($pvds as $resourcePvd) {
            $this->ordered[$resourcePvd] = true;
        }
        $localOrder[] = $providerName;
        return $localOrder;
    }