Cách Tạo command artisan trong laravel

ngày 30-05-2020

Đối với những người học laravel thì command không phải là vấn đề xa lạ khi mà laravel hầu như đã hỗ trợ rất nhiều những lệnh command để các lập trình viên có thể thao tác dễ dàng hơn ví dụ như:

Trong bài viết này sẽ nói về cách tạo các command line cho riêng bạn để hỗ trợ cho việc codeing, ví dụ khi bạn cần thực hiện một chức năng như sent mail, export csv mà không cần phải có request từ client, hay nói cách dễ hiểu hơn là mình sẽ run php bằng cli (commant line)

I :  Xem danh sách Command  line đang có

 

Để xem tất cả các command line đang hỗ trợ hãy gõ

Để xem các hưỡng dẫn hỗ trợ của của lệnh, cũng như là các tham số truyền vào, thông tin về version…

II: Cách tạo mới một command line

Bạn có thể tạo một class command mới bằng lệnh

sau khi thực hiện lệnh này thì trong thư mục app/console/command sẽ có file tên là TestComand.php, đây được xem như là controller, sẽ chiệu trách nhiệm thực hiện chức năng của command.

Để chạy được command, thì mình cần phải khai báo lớp command đó  trong Console/kennel.php,

Ví dụ cho việc khai báo class TestCommand, tôi sẽ thực hiện

sau khi khai báo xong, các bạn có thể dử dụng lệnh php artisan list để xem command mình vừa tạo đã có trong danh sách command đang được hỗ trợ chưa

III Các hàm và thuộc tính chính trong command

 

1.Khai báo tên

 

protected $signature = 'ten command';

 

ví dụ:

 

protected $signature = 'function:test-command';

 

thuộc tính này khai báo tên của command, ví dụ như đoạn code ở trên, khi thực hiện chức năng của command,ta sẽ chạy lệnh:

2.khai báo description

Thuộc tính này để khai báo mô tả của command

protected $description = 'Test command active';

3.hàm handle

 

trong hàm này sẽ chứa đoạn code thực thi chức năng của command line

ví dụ:

 

 

Và đây là kết quả: khi tôi gõ php artisan:test-command

 

 

 

Ngoài ra đễ hỗ trợ lập trình tốt hơn cho console, laravel cung cấp cho chúng ta các công cụ để làm việc.

 

Truyền biến và option vào cmd

Ví dụ:

//register command line, name is argument required, and function is option, not required

protected $signature = 'function:test-command {name} {--function=default}';

 

với {name} là biến bắt buộc phải truyền vào khi gõ lệnh command, còn {{--function= default}} là biến theo dạng option (không bắt buộc), với function là tên biến còn default

là giá trị mặc định, ví dụ sau khi khai báo như trên, lúc chạy command ta sẽ dùng lệnh

php artisan:test-command tich --function=h

hoặc

php artisan:test-command tich

 

sau khi truyền biến và option,khi cần sử dụng đến chúng, ta có thể get value các biến hoặc option này ra bằng các hàm được viết trong function handle

 //get argument value

 $name = $this->argument('name');

 //get option value

 $function= $this->option('function');

 

Ngoài ra để có thể lập trình trên console còn có 1 số hàm như

// display ask question yes/no

 

//display question and wait answer

Ngoài ra còn khá nhiều hàm hỗ trợ khác mà tôi không đề cập đến, chi tiết các bạn nên tham khảo

https://laravel.com/docs/6.x/artisan

 

Để hiểu rõ hơn về command ta tham khảo đoạn code sau

 

Và đây là kết quả

Khi tôi nhập: php artisan:test-command tich --function=h

 

 

Hãy viết lại đoạn code trên và thử với các trường hợp còn lại nhé