<?php
declare(strict_types=1);
namespace Arcanedev\Support\Providers\Concerns;
/**
* Trait InteractsWithApplication
*
* @author ARCANEDEV <arcanedev.maroc@gmail.com>
*/
trait InteractsWithApplication
{
/* -----------------------------------------------------------------
| Main Methods
| -----------------------------------------------------------------
*/
/**
* Register multiple service providers.
*
* @param array $providers
*/
protected function registerProviders(array $providers)
{
foreach ($providers as $provider) {
$this->registerProvider($provider);
}
}
/**
* Register a service provider.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @param bool $force
*
* @return \Illuminate\Support\ServiceProvider
*/
protected function registerProvider($provider, $force = false)
{
return $this->app->register($provider, $force);
}
/**
* Register a console service provider.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @param bool $force
*
* @return \Illuminate\Support\ServiceProvider|null
*/
protected function registerConsoleServiceProvider($provider, $force = false)
{
if ($this->app->runningInConsole()) {
return $this->registerProvider($provider, $force);
}
return null;
}
/**
* Register the package's custom Artisan commands when running in console.
*
* @param array $commands
*/
protected function registerCommands(array $commands)
{
if ($this->app->runningInConsole()) {
$this->commands($commands);
}
}
/**
* Register a binding with the container.
*
* @param string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
*/
protected function bind($abstract, $concrete = null, $shared = false)
{
$this->app->bind($abstract, $concrete, $shared);
}
/**
* Register a shared binding in the container.
*
* @param string|array $abstract
* @param \Closure|string|null $concrete
*/
protected function singleton($abstract, $concrete = null)
{
$this->app->singleton($abstract, $concrete);
}
}