This code allows you to register additional package providers and
aliases for different environments, similar to how it used to work in
L4. While the most of local configuration in L5 can be done by .env
files, you can't really separate dev packages that way. If you install a
package with `composer require --dev` it will not be available in the
production and if you forget to remove the providers from the app.php it
will break everything.
With this code you can have local/app.php config with package providers
and aliases that will be merged with the main config, but only if you
are in local env. It will also support using separate config for
production/app.php or test/app.php (or any other environment name you
use).
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Foundation\AliasLoader;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
}
public function register()
{
$path = $this->app->environment() .'.app';
$config = $this->app->make('config');
$aliasLoader = AliasLoader::getInstance();
if ($config->has($path)) {
array_map([$this->app, 'register'], $config->get($path .'.providers'));
foreach ($config->get($path .'.aliases') as $key => $class) {
$aliasLoader->alias($key, $class);
}
}
}
}