日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何使用Laravel Debugbar?

發布時間:2025/6/17 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用Laravel Debugbar? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

非常好用的Laravel debug工具,一定要安裝

Chrome/FireFox 都會自帶一些 debug 工具可以幫助我們 debug 前端,如 CSS、JavaScript… 等,但若要 debug 后端的 Laravel 呢? 如有了 ORM 之后雖然方便,但我們可能對其產生的 SQL 有所疑惑,想深入了解其所產生的 SQL 是否符合我們的需求,這些在?Barry vd. Heuvel?的?Laravel Debugbar?都可以滿足我們。

Version

  • Laravel 5.1
  • Laravel Debugbar 2.0

安裝 Laravel Debugbar

使用 Composer 安裝

oomusou@mac:~/MyProject$ composer require barryvdh/laravel-debugbar --dev

在項目目錄下,使用?composer?將?Laravel debugbar?安裝到當前項目中。

為什么要加上?--dev?參數?

根據?Laravel debugbar?官網的說明文檔,并沒有加上?–dev,這會使得?Laravel debugbar?被裝在?composer.json?的?require字段,而非?require-dev?字段,這會造成在正式線上環境也會安裝?Laravel debugbar,這是不需要的。

composer require?會行完,composer.json?內容會如下所示 :

{"require": {"php": ">=5.5.9", "laravel/framework": "5.1.*" }, "require-dev": { "fzaninotto/faker": "~1.4", "mockery/mockery": "0.9.*", "phpunit/phpunit": "~4.0", "phpspec/phpspec": "~2.1", "laravel/homestead": "^2.1", "barryvdh/laravel-debugbar": "^2.0" } }

新增 Service Provider

Composer 只是將?Laravel debugbar?安裝到當前項目目錄的?/vendor/barryvdh/laravel-debugbar?目錄下,此時 Laravel 還不知道有這個 package,必須通過 service provider 的注冊加載,Laravel debugbar 才可以使用。

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

這里

public function register() { if ($this->app->environment() == 'local') { $this->app->register('Barryvdh\Debugbar\ServiceProvider'); } }

在?register()?加入以上代碼,只有在本機開發環境時,Laravel debugbar?才會被注冊加載,如此可避免?Laravel debugbar?在正式環境被注冊加載。

為什么不直接寫在 config/app.php 呢?

在?Laravel debugbar?官方的說明文檔,是教人直接在?config/app.php?的?providers?加入?Barryvdh\Debugbar\ServiceProvider::class,這樣雖然可行,但會導致正式環境也會加載?Laravel debugbar,雖然?APP_DEBUG=false?可以讓?Laravel debugbar?不會在正式環境加載,但還是會影響 Laravel 啟動時間,比較浪費內存。

設置 Facade

為了方便我們更容易使用?Laravel debugar?顯示變量,建議將?Laravel Debugbar?加入facade。

'aliases' => [(略)'Validator' => Illuminate\Support\Facades\Validator::class,'View' => Illuminate\Support\Facades\View::class, // Laravel Debugbar 'Debugbar' => Barryvdh\Debugbar\Facade::class, ],

下面

// Laravel Debugbar 'Debugbar' => Barryvdh\Debugbar\Facade::class,

加入Debugbar facade。

復制配置文件

oomusou@mac:~/MyProject$ php artisan vendor:publish

將?/vendor/barryvdh/laravel-debugbar/config/debugbar.php?復制到?/config/debugbar.php,將來你可以直接修改項目下的?/config/debugbar.php?對Laravel Debugbar 進行配置。

確認 .env

APP_ENV=local APP_DEBUG=true

Laravel Debugbar 只有在?APP_ENV=local?并且?APP_DEBUG=true?下才會啟動,確認 .env 配置正確。

測試

在下方會出現 Laravel Debugbar,因為他是純 HTML,所以各種瀏覽器都可使用。

使用Laravel Debugbar

觀察SQL

在?Queris?會顯示目前網頁所執行過的SQL,可由此觀察 ORM 所產生的的SQL是否有調整的空間。

觀察 View

在?Views?會顯示目前網頁正使用了哪些view。

觀察 Route 與 Controller

在 Route 會顯示目前網頁正使用哪個 route 與 controller。

觀察HTTP Request

在 Request 會顯示目前網頁使用 HTTP request 的狀態。

自定義 Debug 信息

業務上我們可以直接將debug 信息顯示在 Laravel Debugbar,這樣就不用使用?echo()?或?dd()?將原本的網頁弄亂了。

Laravel Debugbar 提供了以下方法 :

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

在 Message 可以看到我們自己的 debug 信息。

使用 Timer 評估效率

業務上我們常會需要自行使用 timer 評估一段算法或SQL的效率,Laravel Debugbar 提供了以下方法 :

Debugbar::startMeasure('render','Time for rendering'); Debugbar::stopMeasure('render'); Debugbar::addMeasure('now', LARAVEL_START, microtime(true)); Debugbar::measure('My long operation', function() { // Do something… });

在 Timeline 可以看到實際執行時間。

Debugbar::addMeasure('now', LARAVEL_START, microtime(true));

Debugbar::addMeasure()?的第1個參數為在 Debugbar 的識別文字,第2個參數為起始時間,第3個參數為結束時間。

下圖為從 Laravel 啟動到目前這個程序所花的時間。

使用 Helper Function

以上方式雖然方便,但還要使用到?Debugbar?facade,Laravel debugbar 另外提供了 helper function,可以更簡單的使用。

// All arguments will be dumped as a debug message debug($var1, $someString, $intValue, $object); start_measure('render','Time for rendering'); stop_measure('render'); add_measure('now', LARAVEL_START, microtime(true)); measure('My long operation', function() { // Do something… });
  • debug()?可以接受無限參數,每一個參數在?Messages?都會獨立一行,屬于 debug 分類。
  • start_measure()?相當于?Debugbar::startMeasure()。
  • stop_measure()?相當于?Debugbar::stopMeasure()。
  • add_measure()?相當于?Debugbar::addMeasure()。
  • measure()?相當于?Debugbar::measure()。

正式環境的安裝考慮

Laravel Debugbar 是開發者的?神兵利器,但若不小心安裝在正式環境,則成為黑客的最好的?入侵工具。

使用 –no-dev 安裝

由于?vendor?沒有加入 git 做版本管理,所以勢必在正式環境也要重新安裝 package,在composer install?時,切記要安裝加上?--no-dev?參數,再回顧一下我們的?composer.json。

"require": {"php": ">=5.5.9","laravel/framework": "5.1.*" }, "require-dev": { "fzaninotto/faker": "~1.4", "mockery/mockery": "0.9.*", "phpunit/phpunit": "~4.0", "phpspec/phpspec": "~2.1", "laravel/homestead": "^2.1", "barryvdh/laravel-debugbar": "^2.0" },

由于 Laravel debugbar 是放在?require-dev?字段的,因此加上?--no-dev?之后,composer 將不會在正式環境安裝 Laravel debugbar。

APP_DEBUG=false

APP_ENV=production APP_DEBUG=false

切記將?APP_DEBUG=false,確保 Laravel debugbar 不會在正式環境執行。

Conclusion

  • 凡是只有開發者本身在用的 package,都可以模仿這種方式注冊和加載,這樣除了可以避免將 package 安裝到正式環境外,也可加速 Laravel 加載速度,更節省內存。
  • Laravel debugbar 是 Laravel 開發必用的 package,對于 debug 非常方便。
  • 由于 Laravel debugbar 功能過于強大,在正式環境要特別小心。

Sample Code

完整的例子可以在我的GitHub上找到。

轉載于:https://www.cnblogs.com/onew/p/11356773.html

總結

以上是生活随笔為你收集整理的如何使用Laravel Debugbar?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。