diff --git a/src/Illuminate/Support/ServiceProvider.php b/src/Illuminate/Support/ServiceProvider.php index 6c530c121d3c..415a106ee842 100755 --- a/src/Illuminate/Support/ServiceProvider.php +++ b/src/Illuminate/Support/ServiceProvider.php @@ -3,12 +3,34 @@ namespace Illuminate\Support; use Closure; +use Illuminate\Auth\AuthServiceProvider; +use Illuminate\Auth\Passwords\PasswordResetServiceProvider; +use Illuminate\Broadcasting\BroadcastServiceProvider; +use Illuminate\Bus\BusServiceProvider; +use Illuminate\Cache\CacheServiceProvider; use Illuminate\Console\Application as Artisan; use Illuminate\Contracts\Foundation\CachesConfiguration; use Illuminate\Contracts\Foundation\CachesRoutes; use Illuminate\Contracts\Support\DeferrableProvider; +use Illuminate\Cookie\CookieServiceProvider; +use Illuminate\Database\DatabaseServiceProvider; use Illuminate\Database\Eloquent\Factory as ModelFactory; +use Illuminate\Encryption\EncryptionServiceProvider; +use Illuminate\Filesystem\FilesystemServiceProvider; +use Illuminate\Foundation\Providers\ConsoleSupportServiceProvider; +use Illuminate\Foundation\Providers\FoundationServiceProvider; +use Illuminate\Hashing\HashServiceProvider; +use Illuminate\Mail\MailServiceProvider; +use Illuminate\Notifications\NotificationServiceProvider; +use Illuminate\Pagination\PaginationServiceProvider; +use Illuminate\Pipeline\PipelineServiceProvider; +use Illuminate\Queue\QueueServiceProvider; +use Illuminate\Redis\RedisServiceProvider; +use Illuminate\Session\SessionServiceProvider; +use Illuminate\Translation\TranslationServiceProvider; +use Illuminate\Validation\ValidationServiceProvider; use Illuminate\View\Compilers\BladeCompiler; +use Illuminate\View\ViewServiceProvider; abstract class ServiceProvider { @@ -405,6 +427,39 @@ public function commands($commands) }); } + /** + * Get the application default providers. + * + * @return \Illuminate\Support\Collection + */ + public static function defaultProviders() + { + return collect([ + AuthServiceProvider::class, + BroadcastServiceProvider::class, + BusServiceProvider::class, + CacheServiceProvider::class, + ConsoleSupportServiceProvider::class, + CookieServiceProvider::class, + DatabaseServiceProvider::class, + EncryptionServiceProvider::class, + FilesystemServiceProvider::class, + FoundationServiceProvider::class, + HashServiceProvider::class, + MailServiceProvider::class, + NotificationServiceProvider::class, + PaginationServiceProvider::class, + PipelineServiceProvider::class, + QueueServiceProvider::class, + RedisServiceProvider::class, + PasswordResetServiceProvider::class, + SessionServiceProvider::class, + TranslationServiceProvider::class, + ValidationServiceProvider::class, + ViewServiceProvider::class, + ]); + } + /** * Get the services provided by the provider. * diff --git a/tests/Support/ServiceProviderTest.php b/tests/Support/ServiceProviderTest.php new file mode 100644 index 000000000000..85c76a486f13 --- /dev/null +++ b/tests/Support/ServiceProviderTest.php @@ -0,0 +1,22 @@ +assertInstanceOf(Collection::class, $defaultProviders); + + foreach ($defaultProviders as $provider) { + $this->assertTrue(class_exists($provider)); + $this->assertTrue(is_subclass_of($provider, ServiceProvider::class)); + } + } +}