protected function checkProviderDependencies(DependantProviderInterface $provider) { $errors = []; foreach ($provider->getClassDependencies() as $class) { if (!class_exists($class)) { $errors[] = "Class must exist: {$class}"; } } foreach ($provider->getContainerDependencies() as $class) { if (!$this->container->isBound($class)) { $errors[] = "Class must be bound to the container: {$class}"; } } foreach ($provider->getProviderDependencies() as $class) { if (!isset($this->providers[$class])) { $errors[] = "Provider must be loaded: {$class}"; } } if ($errors) { $providerClass = get_class($provider); $message = "Errors while registering provider: {$providerClass}"; if (count($errors) > 1) { $message .= "\n" . implode("\n", $errors); } else { $message .= " - {$errors[0]}"; } throw new Providers\ProviderException($message, $errors); } }