mirror of
https://github.com/php-flasher/php-flasher.git
synced 2026-03-31 23:17:47 +01:00
62 lines
1.6 KiB
PHP
62 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Flasher\Notyf\Laravel\ServiceProvider;
|
|
|
|
use Flasher\Notyf\LaravelFlasher\PrimeNotyfServiceProvider;
|
|
use Flasher\Notyf\Laravel\ServiceProvider\Providers\ServiceProviderInterface;
|
|
|
|
final class ServiceProviderManager
|
|
{
|
|
private $provider;
|
|
|
|
/**
|
|
* @var ServiceProviderInterface[]
|
|
*/
|
|
private $providers = array(
|
|
'Flasher\Notyf\Laravel\ServiceProvider\Providers\Laravel4',
|
|
'Flasher\Notyf\Laravel\ServiceProvider\Providers\Laravel',
|
|
'Flasher\Notyf\Laravel\ServiceProvider\Providers\Lumen',
|
|
);
|
|
|
|
private $notifyServiceProvider;
|
|
|
|
public function __construct(NotifyNotyfServiceProvider $notifyServiceProvider)
|
|
{
|
|
$this->notifyServiceProvider = $notifyServiceProvider;
|
|
}
|
|
|
|
public function boot()
|
|
{
|
|
$provider = $this->resolveServiceProvider();
|
|
|
|
$provider->publishConfig($this->notifyServiceProvider);
|
|
$provider->mergeConfigFromNotyf();
|
|
}
|
|
|
|
public function register()
|
|
{
|
|
$provider = $this->resolveServiceProvider();
|
|
$provider->registerNotifyNotyfServices();
|
|
}
|
|
|
|
/**
|
|
* @return ServiceProviderInterface
|
|
*/
|
|
private function resolveServiceProvider()
|
|
{
|
|
if ($this->provider instanceof ServiceProviderInterface) {
|
|
return $this->provider;
|
|
}
|
|
|
|
foreach ($this->providers as $providerClass) {
|
|
$provider = new $providerClass($this->notifyServiceProvider->getApplication());
|
|
|
|
if ($provider->shouldBeUsed()) {
|
|
return $this->provider = $provider;
|
|
}
|
|
}
|
|
|
|
throw new \InvalidArgumentException('Service Provider not found.');
|
|
}
|
|
}
|