private function orderProvider(ServiceProviderInterface $provider)
{
$localOrder = [];
$requires = $provider->getRequires();
$provides = $provider->getProvides();
if (!empty($provides)) {
foreach ($provides as $resource) {
$localOrder = array_merge($localOrder, $this->orderResource($resource));
}
} else {
foreach ($requires as $resource) {
$localOrder = array_merge($localOrder, $this->orderResource($resource));
}
$localOrder[] = get_class($provider);
}
return $localOrder;
}