Công cụ debugbar không thể thiếu (ok)
https://allaravel.com/blog/huong-dan-cai-dat-va-su-dung-laravel-debugbar
Last updated
https://allaravel.com/blog/huong-dan-cai-dat-va-su-dung-laravel-debugbar
Last updated
64,791 lượt xem 8 bình luận viết bởi FirebirD
Nhược điểm lớn nhất khi lập trình PHP là các IDE chưa hỗ trợ debug tốt như với lập trình .NET sử dụng Microsoft Visual Studio, cũng chính vì thế cộng đồng PHP luôn tìm cách phát triển ra các công cụ debug thật tốt, PHP Debug Bar là một trong những công cụ như thế. Nó giúp cho việc debug một ứng dụng PHP không còn là ác mộng. Laravel Debugbar là một gói phần mềm giúp tích hợp PHP Debug Bar vào framework Laravel. Sau khi cài đặt Laravel Debugbar, vào mỗi trang của website bạn sẽ thấy có một thanh công cụ ở phía dưới cùng, nó chứa rất nhiều các thông tin hữu ích cho việc kiểm tra lỗi ứng dụng.
Laravel Debugbar: tìm bọ thật đơn giản :)
Bạn có thể cài đặt Laravel Debugbar vào project Laravel thông qua công cụ Composer với câu lệnh composer require barryvdh/laravel-debugbar:
Tiếp theo đăng ký ServiceProvider và Facade cho Laravel Debugbar trong file config/app.php:
Chú ý, với phiên bản Laravel từ 5.5 trở lên, không cần bước đăng ký ServiceProvider và Facade do các phiên bản mới có tính năng tự động kiểm tra và đăng ký. Mặc định Laravel Debugbar ở chế độ hoạt động nếu thiết lập trong config/app.php với thuộc tính debug là true.
Laravel Debugbar cũng có file config riêng, nếu bạn không muốn dùng chung cấu hình app.debug. Thực hiện copy file config từ trong gói barryvdh/laravel-debugbar vào thư mục config của dự án bằng lệnh artisan vendor:publish.
và có thể thay đổi chế độ bật tắt của Laravel Debugbar trong config\debugbar.php:
Ghi nhớ:
Chỉ nên để Laravel Debugbar ở chế độ hoạt động khi phát triển ứng dụng, nó có thể làm chậm ứng dụng đi do phải thu thập rất nhiều thông tin phục vụ cho việc debug. Nếu bạn thấy Laravel Debugbar hoạt động quá chậm bạn có thể tắt bớt một số các Collector đi, xem phần tiếp theo để biết thêm chi tiết.
Sau bước cài đặt ở trên, vào bất kỳ trang nào của project bạn cũng sẽ thấy thanh Laravel Debugbar xuất hiện ở cuối trang.
Trên thanh Debugbar có rất nhiều các nhóm thông tin như Messages, Timeline, Exceptions, Views... Mỗi nhóm thông tin này sẽ do một Collector đảm nhận thu thập dữ liệu. Laravel Debugbar có những collector sau:
QueryCollector: Thu thập thông tin về các truy vấn cơ sở dữ liệu.
RouteCollector: Thông tin về các route trong hệ thống.
ViewCollector: Thông tin về các view được tải.
EventsCollector: Thông tin về các sự kiện trong Laravel.
LaravelCollector: Thông tin về phiên bản Laravel và môi trường đang sử dụng (mặc định tắt).
SymfonyRequestCollector: thay thế cho RequestCollector với nhiều thông tin hơn về các request và response
LogsCollector: Thông tin và các log được lưu trong thư mục logs (mặc định tắt)
FilesCollector: Thông tin về các file được included hoặc required bởi PHP. (mặc định tắt)
ConfigCollector: Thông tin về các file cấu hình trong thư mục config (mặc định tắt)
Các collector của bên thứ ba:
LogCollector: Thông tin các log message.
SwiftMailCollector và SwiftLogCollector: Thông tin về xử lý email trong Laravel.
Các collector mặc định của PHP Debug Bar:
PhpInfoCollector
MessagesCollector
TimeDataCollector
MemoryCollector
ExceptionsCollector
Laravel Debugbar sẽ làm cho ứng dụng hoạt động chậm đi do phải thu thập rất nhiều các thông tin khác nhau, nếu các nhóm thông tin nào bạn thấy không cần thiết có thể tắt bớt các Collector đi bằng cách thiết lập trong file config\debugbar.php:
Với thanh Debugbar bạn đã có rất nhiều thông tin cho việc debug, tuy nhiên Laravel Debugbar còn cho phép bạn sử dụng Facade Debugbar để thực hiện nhiều điều hơn nữa.
Phần đầu tiên trong thanh Debugbar là Message, bạn có thể hiển thị các message trong này với các tình huống khác nhau để hiển thị các thông tin cần thiết:
Khi đó trong phần Message của thanh Debugbar bạn sẽ thấy các thông tin:
Có 3 cách khác nhau để hiển thị thời gian thực hiện một hành động trong code.
Cách 1: Nhóm đoạn code cần đo thời gian thực hiện vào Debugbar::startMeasure() và Debugbar::stopMeasure(), ví dụ:
Cách 2: Sử dụng phương thức addMeasure():
Cách 3: Khai báo hàm Closure với phương thức measure():
Kết quả khi bạn vào trang web này bạn sẽ thấy trong phần Timeline của Laravel Debugbar hiển thị như sau:
Cả ba cách trên đều cho ra cùng một kết quả, tuy nhiên có thể áp dụng các cách khai báo khác nhau tùy thuộc từng trường hợp cụ thể. Ví dụ: Để xác định thời gian từ lúc ứng dụng start đến hiện tại ta có thể sử dụng cách thứ 2 đơn giản như sau:
Với LARAVEL_START là một hằng số được định nghĩa trong bootstrap/autoload.php:
Chứa thời gian khi ứng dụng Laravel bắt đầu thực hiện tính bằng micro giây.
Đôi khi chúng ta muốn hiển thị thông tin một Exception trong Debugbar:
Laravel Debugbar có thể bắt được các câu truy vấn bạn xây dựng bằng Eloquent Model hoặc Query Builder, các thông tin này là rất cần thiết khi bạn muốn debug các câu truy vấn phức tạp.
Khi bạn vào trang web và vào phần Queries bạn sẽ thấy câu truy vấn cuối cùng được Laravel sinh ra để thực hiện truy vấn cơ sở dữ liệu, nó đầy đủ cả các thông tin nhập vào.
Ngoài các thông tin chung, Laravel Debugbar còn có các thông tin thu thập với các thành phần trong framework Laravel như View, Route, Session, Request.
3.5.1 Views
Phần thông tin Views trong Laravel Debugbar chứa các thông tin về các Blade template được sử dụng để render ra trang web hiện tại, khi click vào từng view bạn sẽ thấy một bảng chứa các tham số được truyền cho view đó.
3.5.2 Route
Thông tin Route trong Laravel Debugbar bao gồm phương thức của Controller nào được sử dụng để xử lý cho route hiện hành, thông tin về prefix, alias, thông tin về Middleware nào được sử dụng.
3.5.3 Request
Các thông tin về Request cũng được hiển thị trong Laravel Debugbar bao gồm mã trạng thái, request header, loại nội dung.
Debugbar có thể bật tắt thông qua các tham số như app.debug (nếu config\debugbar.php không tồn tại) hoặc debugbar.enable. Tuy nhiên, chúng ta muốn đưa chức năng bật tắt này vào trong ứng dụng, thực hiện bằng cách gọi đến các phương thức enable và disable:
Cũng có thể bạn muốn chỉ có người dùng có quyền quản trị mới thấy Laravel Debugbar khi Debugbar đã được bật, các user khác duyệt trang vẫn bình thường? Bạn hoàn toàn có thể thực hiện được. Mặc định Laravel Debugbar được chèn vào trước thẻ kết thúc . Bạn thiết lập cấu hình mặc định này thành false trong thành phần inject của file config\debugbar.php:
Khi đó, ở đâu cần thanh debugbar bạn sử dụng phương thức Debugbar::getJavascriptRenderer():
Với công cụ Laravel Debugbar bạn đã có một công cụ debug khá tốt, tuy không thể sánh được với các công cụ như Microsoft Visual Studio cho lập trình .Net nhưng như vầy cũng là quá đủ thông tin để chúng ta thực hiện kiểm tra lỗi nhanh chóng hơn so với sử dụng các phương thức cổ điển như in ra các biến cần xem hoặc sử dụng helper function dd(). Hi vọng trong thời gian không xa, các lập trình viên Laravel nói riêng và lập trình viên PHP nói chung sẽ có một công cụ mạnh mẽ cỡ như Visual Studio. Hehe ai cấm mình mơ ước đâu bạn nhỉ?