Files
php-flasher/src/Notyf/Laravel/ServiceProvider/ServiceProviderManager.php
T
KHOUBZA Younes 598da9586d update namespace
2020-12-03 09:15:47 +01:00

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.');
}
}