Skip to content

Commit

Permalink
[10.x] Minor skeleton slimming (framework edition) (laravel#46786)
Browse files Browse the repository at this point in the history
* allow web and api named args on routes method

* add app skeleton broadcast provider in core

* add default provider collection

* remove base broadcast service provider

* Apply fixes from StyleCI

* revert route provider change

---------

Co-authored-by: StyleCI Bot <[email protected]>
  • Loading branch information
taylorotwell and StyleCIBot authored Apr 15, 2023
1 parent d95f865 commit 0720d08
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 0 deletions.
102 changes: 102 additions & 0 deletions src/Illuminate/Support/DefaultProviders.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<?php

namespace Illuminate\Support;

class DefaultProviders
{
/**
* The current providers.
*
* @var array
*/
protected $providers;

/**
* Create a new default provider collection.
*
* @return void
*/
public function __construct(?array $providers = null)
{
$this->providers = $providers ?: [
\Illuminate\Auth\AuthServiceProvider::class,
\Illuminate\Broadcasting\BroadcastServiceProvider::class,
\Illuminate\Bus\BusServiceProvider::class,
\Illuminate\Cache\CacheServiceProvider::class,
\Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
\Illuminate\Cookie\CookieServiceProvider::class,
\Illuminate\Database\DatabaseServiceProvider::class,
\Illuminate\Encryption\EncryptionServiceProvider::class,
\Illuminate\Filesystem\FilesystemServiceProvider::class,
\Illuminate\Foundation\Providers\FoundationServiceProvider::class,
\Illuminate\Hashing\HashServiceProvider::class,
\Illuminate\Mail\MailServiceProvider::class,
\Illuminate\Notifications\NotificationServiceProvider::class,
\Illuminate\Pagination\PaginationServiceProvider::class,
\Illuminate\Pipeline\PipelineServiceProvider::class,
\Illuminate\Queue\QueueServiceProvider::class,
\Illuminate\Redis\RedisServiceProvider::class,
\Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
\Illuminate\Session\SessionServiceProvider::class,
\Illuminate\Translation\TranslationServiceProvider::class,
\Illuminate\Validation\ValidationServiceProvider::class,
\Illuminate\View\ViewServiceProvider::class,
];
}

/**
* Merge the given providers into the provider collection.
*
* @param array $providers
* @return static
*/
public function merge(array $providers)
{
$this->providers = array_merge($this->providers, $providers);

return new static($this->providers);
}

/**
* Replace the given providers with other providers.
*
* @param array $items
* @return static
*/
public function replace(array $replacements)
{
$current = collect($this->providers);

foreach ($replacements as $from => $to) {
$key = $current->search($from);

$current = $key ? $current->replace([$key => $to]) : $current;
}

return new static($current->values()->toArray());
}

/**
* Disable the given providers.
*
* @param array $providers
* @return static
*/
public function except(array $providers)
{
return new static(collect($this->providers)
->reject(fn ($p) => in_array($p, $providers))
->values()
->toArray());
}

/**
* Convert the provider collection to an array.
*
* @return array
*/
public function toArray()
{
return $this->providers;
}
}
10 changes: 10 additions & 0 deletions src/Illuminate/Support/ServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -434,4 +434,14 @@ public function isDeferred()
{
return $this instanceof DeferrableProvider;
}

/**
* Get the default providers for a Laravel application.
*
* @return \Illuminate\Support\DefaultProviders
*/
public static function defaultProviders()
{
return new DefaultProviders;
}
}

0 comments on commit 0720d08

Please sign in to comment.