4/11 紀錄


Laravel Debugbar ¶

composer require barryvdh/laravel-debugbar --dev

根據Laravel debugbar官網的說明檔,並沒有加上 –dev,這會使得 Laravel debugbar 被裝在 composer.jsonrequire 區段,而非 require-dev 區段,這會造成在正式上線主機也會安裝 Laravel debugbar,這是不需要的。

For Laravel < 5.5

composer require barryvdh/laravel-debugbar:~2.4 --dev

Composer 只是將 Laravel debugbar 安裝到目前專案目錄的 /vendor/barryvdh/laravel-debugbar 目錄下,此時 Laravel 還不知道有這個 package,必須透過 service provider 的註冊載入,Laravel debugbar 才會啟動。

# /app/Providers/AppServiceProvider.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');  
        }  
    }  
}

在Laravel debugbar官網的說明檔,是教人直接在 config/app.phpproviders 加入 Barryvdh\Debugbar\ServiceProvider::class ,這樣雖然可行,但會導致正式上線主機也會載入 Laravel debugbar,雖然 APP_DEBUG=false 會使 Laravel debugbar 不會在正式上線主機執行,但還是會影響 Laravel 啟動時間,也較浪費記憶體。

# /config/app.php

'aliases' => [
    (略)
    'Validator' =\> Illuminate\\Support\\Facades\\Validator::class,
    'View'      =\> Illuminate\\Support\\Facades\\View::class,
    // Laravel Debugbar
    'Debugbar' =\> Barryvdh\\Debugbar\\Facade::class,
],
php artisan vendor:publish
# /.env
APP_ENV=local
APP_DEBUG=true

Laravel Debugbar只有在APP_ENV=localAPP_DEBUG=true下才會啟動,確認.env設定正確。

使用 ¶

Debugbar::info($object);
Debugbar::error('Error!');
Debugbar::warning('Watch out...');

會顯示在 Message