【问题标题】:laravel 5 configuration service providers for local onlylaravel 5 配置服务提供者仅用于本地
【发布时间】:2015-07-25 14:08:02
【问题描述】:

我刚刚阅读了关于基于您的环境进行配置的 Laravel 5 文档http://laravel.com/docs/5.0/configuration#environment-configuration

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

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

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

【问题讨论】:

    标签: php laravel service-provider


    【解决方案1】:

    这篇文章对我很有帮助:

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

    【讨论】:

    • 太棒了!这解决了服务器上的问题!
    【解决方案2】:

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

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

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

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

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

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

    保重。

    【讨论】:

    • 感谢 MaGnetas,它确实有效,但我担心的是服务提供者定义是在我的生产 app.php 中定义的,尽管它从未真正在那里使用过。感觉就像在性能/灵活性方面倒退了一步,我不能有一个单独的配置文件。
    • 不,环境现在共享所有配置文件。如果您需要为每个环境提供单独的配置值,我相信它应该来自 .env 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2016-12-21
    • 2015-10-24
    • 2016-10-06
    相关资源
    最近更新 更多