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

sortProviders() public method

Analyze required and provided dependencies of providers and sort the list to ensure right order while resolving dependency tree.
public sortProviders ( Kraken\Container\ServiceProviderInterface[] $providers ) : Kraken\Container\ServiceProviderInterface[]
$providers Kraken\Container\ServiceProviderInterface[]
return Kraken\Container\ServiceProviderInterface[]
    public function sortProviders($providers)
    {
        foreach ($providers as $provider) {
            $providerName = get_class($provider);
            $this->reqs[$providerName] = $provider->getRequires();
            $this->pvds[$providerName] = $provider->getProvides();
            $this->instances[$providerName] = $provider;
            foreach ($provider->getProvides() as $resource) {
                $this->obtainableIn[$resource] = $providerName;
            }
        }
        $newOrder = [];
        foreach ($providers as $provider) {
            $orderedProviders = $this->orderProvider($provider);
            foreach ($orderedProviders as $orderedProvider) {
                $newOrder[] = $this->instances[$orderedProvider];
            }
        }
        return $newOrder;
    }