12/08/2018, 13:31
Debug trong laravel
Debug là một thành phần trợ giúp vô cùng đắc lực cho lập trình viên khi phát triển ứng dụng. Sẽ khó có thể nói một framework là tốt nếu nó không có những công cụ debug tốt. Việc một framework được support bởi những công cụ debug tốt sẽ làm giảm rất nhiều thời gian phát hiện bug đồng nghĩa với ...
- Debug là một thành phần trợ giúp vô cùng đắc lực cho lập trình viên khi phát triển ứng dụng. Sẽ khó có thể nói một framework là tốt nếu nó không có những công cụ debug tốt.
- Việc một framework được support bởi những công cụ debug tốt sẽ làm giảm rất nhiều thời gian phát hiện bug đồng nghĩa với việc giảm thời gian phát triển ứng dụng
- Laravel không chỉ là một framework rất mạnh của php nhờ việc có thể include rất nhiều package của php mà nó còn những công cụ debug vô cùng tuyệt vời bởi những công cụ debug rất tốt.
- Có 3 công cụ debug mà các lập trình viên được sử dụng nhiều nhất trên laravel là hàm dd, laravel log và debug bar
- Đây có lẽ là hàm được sử dụng nhiều nhất và thường xuyên nhất.
- Hàm dd() thường được sử dụng khi ta cần kiểm tra đầu ra của kiểu giữ liệu
-
- Giữ liệu đầu ra có đúng chuẩn hay không?
-
- Có đúng kết quả cần hay không?...
- Hàm dd() trả về nội dung dump data của biến tới trình duyệt và hiển thị một cách trực quan tới lập trình viên
- Nếu không sử dụng hàm dd ta cũng có thể sử dụng một tập hợp các hàm debug khác của php để cho ra kết quả tương tự
-
- trong php thuần:
var_dump($a); die();
-
- sử dụng dd()
dd($a);
- Từ ví dụ trên có thể thấy sử dụng hàm dd sẽ tiện lợi và trực quan hơn nhiều so với cách sử dụng các hàm mặc định của php
- Ta đã thấy dd() là một hàm tuyệt vời và có thể support hầu hết các các trường hợp đơn giản của debug còn Laravel Loger thì sao?
- Có một yếu điểm khi ta sử dụng hàm dd() đó là tiến trình chạy của ứng dụng nhiều khi sẽ không được chạy hết mà khi gặp hàm dd() tiến trình sẽ bị dừng lại ngay lập tức. Chính vì thế trong rất nhiều trường hợp khi nhận được kết quả trả về sau khi sử dụng hàm debug lập trình viên sẽ phán đoán sai tiến trình sử lý và có thể gây ra những bug không đáng có.
- Với Laravel debug laravel debug thì ứng dụng sẽ không bị dừng lại khi gặp hàm debug. Tất cả các tiến trình sử lý sẽ được lưu lại trong file storage/logs/laravel.log
- Thường khi lập trình viên muốn kiểm tra log thì phải vào file storage/logs/laravel.log và phải căng mắt tìm xem log mình vừa ghi lại dưodcj hiển thị tại dòng nào. tuy nhiên khi một ứng dụng có quá nhiều log thì đây thực là một công việc không hề thích thú tí nào.
- với hàm dd() và các hàm của Laravel Log ta đã có thể degbug gần như mọi thứ cần khi phát triển ứng dụng. Vậy tại sao lại cần phải có Debugbar?
- Với debugbar ta có thể kiểm tra mọi thứ của ứng dụng từ những thông tin về trạng thái truy cập dbs, routes, hay các view sử dụng đến cả số câu truy vấn, thời gian truy vấn ..của một chức năng nhất định. từ đó có thể nâng cao perfommane cho hệ thống ta đang phát triển.
Cài đặt
- Sử dụng composer:
composer require barryvdh/laravel-debugbar
- Laravel 5.x:
BarryvdhDebugbarServiceProvider::class,
- Nếu bạn muốn sử dụng facade cho log messages, thêm facades trong app.php:
'Debugbar' => BarryvdhDebugbarFacade::class,
- Đặt cấu hình trong file config vào ứng dụng thông qua console
php artisan vendor:publish --provider="BarryvdhDebugbarServiceProvider"
- Việc lựa chọn tool debug vào từng thời điểm khác nhau khi phát triển ứng dụng là vô cùng quan trọng. Trên đây là những phương pháp debug tốt nhất và thường được sử dụng nhiều nhất khi phát triển ứng dụng bằng laravel.
Tham khảo
- https://github.com/barryvdh/laravel-debugbar
- http://laraveldaily.com/echoing-dd-vs-var_dump-vs-print_r/
- https://laravel.com/docs/master/errors