DefaultProviders.php
TLDR
This file contains the DefaultProviders
class, which is responsible for creating a default provider collection. The class provides methods for merging, replacing, disabling providers, and converting the provider collection to an array.
Methods
merge
Merges the given providers into the provider collection.
replace
Replaces the given providers with other providers.
except
Disables the given providers.
toArray
Converts the provider collection to an array.
<?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 = is_int($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;
}
}