laravel 5 仅限本地的配置服务提供商

laravel 5 configuration service providers for local only

我刚刚根据您的环境阅读了 Laravel 5 配置文档 http://laravel.com/docs/5.0/configuration#environment-configuration

我了解如何使用 .env 文件配置一些变量,但我该如何配置根据环境加载哪些服务提供商?

例如,在我的“'local'”环境中,我使用这个需要服务提供商的调试栏插件,但我不想在 config/app.php 中定义它用于生产.

在 Laravel 4.2 中我可以创建 config/local/app.php 但这似乎不再有效,有什么替代方法?

我相信如果您在 .env 文件中将 APP_DEBUG 设置为 false,调试栏将自动消失。

我还写了一个中间件 class 来处理这个问题。

在您的情况下,handle 方法可能如下所示:

public function handle($request, Closure $next)
{
    if (app()->environment('production'))
        \Debugbar::disable();
    else
        \Debugbar::enable();

    return $next($request);
}

然后您只需将它添加到 app/Http/kernel 中的中间件列表中即可。php 就可以了。

我有一些额外的条件和更多的环境,所以这个确切的代码没有经过测试,但它应该可以工作,你应该明白了。

保重。

这篇文章对我很有帮助:

https://mattstauffer.co/blog/conditionally-loading-service-providers-in-laravel-5

这就是我所做的并且有效:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        if ($this->app->environment('local')) {
            $this->app->register('Barryvdh\Debugbar\ServiceProvider');
        }
    }
}