Chào các bạn, sau tutorial “Hướng dẫn debug Laravel với PHPStorm và Xdebug“, để debug một ứng dụng, website được lập trình bằng Laravel. Tuy nhiên không phải ứng dụng nào cũng là 1 website, mà có thể nó là 1 cái batch chạy ngầm bên dưới chẳng hạn. Laravel hỗ trợ 1 công cụ quản lý CLI rất mạnh là Artisan Command. Nó là tiền đề để Laravel trở thành PHP Framework tốt nhất hiện nay.
Hôm nay mình sẽ viết 1 ứng dụng nho nhỏ chạy Artisan Command, và hướng dẫn các bạn debug ứng dụng đó trên PHPStorm.
Tiền đề của bài viết này các bạn cần chuẩn bị
- Kiến thức căn bản về Laravel 7.x
- PHPStorm IDE
- Cài đặt Xdebug
Chú ý: Phiên bản PHPStorm của mình là bản PHPStorm 2021.1 (có bản quyền nha), trên các phiên bản khác 1 số config, tùy chọn có thể khác nhau đôi chút.
Bước 1: Thiết lập PHP CLI Interpreter
Mở PHPStorm => Chọn [ File ] => [ Settings ] để vào hộp thoại “Settings” hoặc bấm tổ hợp phím “Ctrl + Alt + S”
Sau đó chọn mục cài đặt là [ PHP ] => Mục “CLI Interpreter” là phiên bản CLI bạn muốn debug => Bấm phím [ OK ]
Bước 2: Tạo một Laravel Artisan Command
Sử dụng command sau để tạo 1 command / batch đơn giản
php artisan make:command Hello
Nó sẽ tạo 1 file Hello.php trong app/Console/Commands/Hello.php
Và có nội dung mặc định như sau:
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class Hello extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'command:name'; /** * The console command description. * * @var string */ protected $description = 'Command description'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return int */ public function handle() { return 0; } }
Mình chỉnh sửa 1 chút code để thực hiện debug
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class Hello extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'hello'; /** * The console command description. * * @var string */ protected $description = 'A program by vinasupport.com'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return int */ public function handle() { $text = 'Hello world from vinasupport.com'; echo $text; } }
Để chạy đoạn code này trên command line rất đơn giản:
php artisan hello
Bước 3: Tạo cấu hình config để debug Laravel Artisan Command
Trên PHPStorm, bạn vào mục [ Run ] => [ Edit Configurations ] để mở hộp thoại “Run/Debug Configurations”
Bấm vào dấu [ + ] => Chọn [PHP Script]
Sau đó các bạn điền các thông tin bên dưới:
- Name: Tên của cấu hình debug. VD: Hello
- File: Browse tới file artisan trong Laravel Project
- Arguments: Tên command bạn vừa tạo ở bên trên. VD: hello
- Interpreter: Chọn PHP CLI mà bạn sử dụng để debug.
- Interpreter Options: Các bạn điền “-dxdebug,develop,trace” với phiên bản của xdebug 3.x.
Trường hợp sử dụng bản xdebug 2.x thì các bạn điền “dxdebug.remote_enable=1 -dxdebug.remote_autostart=on -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1”
Sau đó bấm [ OK ] để lưu lại config.
Bước 4: Set breakpoint và thực hiện debug
Vào lại file code “Hello.php” thực hiện set breakpoint tại bất kỳ vị trí nào bạn muốn debug
Chạy debug trên IDE
Kết quả code sẽ chạy đến đoạn breakpoint mà chúng ta đã set ở trên.
Nguồn vinasupport.com