Một trong những cấu trúc quan trọng tạo nên thương hiệu của mã nguồn mở Laravel đó là artisan Command. Với Artisan Command, nó hỗ trợ các bạn build source cơ bản, thao tác vào database như migrate, seed, kiểm tra thông tin Laravel và nhiều chức năng khác. Giờ chúng ta cùng vinasupport.com tím hiểu về Laravel Artisan Command nhé!
Laravel Artisan Comand là gì?
Artisan là một giao diện dòng lệnh (Command Interface) đi kèm với Laravel. Artisan tồn tại ở thư mục gốc ứng dụng của bạn dưới dạng tập lệnh thủ công và cung cấp một số lệnh hữu ích có thể hỗ trợ bạn trong khi xây dựng ứng dụng của mình.
Danh sách các lệnh Artisan Command
Một số command hữu ích mà bạn nên nhớ.
Liêt kê danh sách các command:
php artisan list
Kiểm tra version của Laravel
php artisan --version
Xem hướng dẫn của 1 tham số
php artisan help migrate
Khởi tạo server cho Laravel
php artisan serve
Danh sách 21 command của Artisan Command
make:channel Create a new channel class make:command Create a new Artisan command make:controller Create a new controller class make:event Create a new event class make:exception Create a new custom exception class make:factory Create a new model factory make:job Create a new job class make:listener Create a new event listener class make:mail Create a new email class make:middleware Create a new middleware class make:migration Create a new migration file make:model Create a new Eloquent model class make:notification Create a new notification class make:observer Create a new observer class make:policy Create a new policy class make:provider Create a new service provider class make:request Create a new form request class make:resource Create a new resource make:rule Create a new validation rule make:seeder Create a new seeder class make:test Create a new test class
Tạo Laravel Artisan Command
Chúng ta sử dụng lệnh artisan để tạo một command
php artisan make:command UploadFile
Trong ví dụ trên mình tạo 1 command với mục đích để upload file. Sau khi chạy lệnh nó sẽ tạo ra 1 file có tên là UploadFile.php ở thư mục app/Console/Commands/
Với nội dung mặc định như sau:
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class UploadFile 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'; /** * Execute the console command. * * @return int */ public function handle() { return 0; } }
Bây giờ chúng ta sẽ sửa lại để nó có thể chạy được như chúng ta mong muốn như sau:
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class UploadFile extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'upload_file'; /** * The console command description. * * @var string */ protected $description = 'Example Upload file to server'; /** * Execute the console command. * */ public function handle() { print ("Start upload file to server vinasupport.com"); // Upload Process here } }
Giải thích ý nghĩa class UploadFile chúng ta có:
– Thuộc tính $signature là tên hoặc là ký hiệu của command.
protected $signature = 'upload_file';
– Thuộc tính $description là phần miêu tả ý nghĩa của command
protected $description = 'Example Upload file to server';
– Phương thức handle là hàm xử lý nội dùng cần thực hiện.
public function handle() { print ("Start upload file to server vinasupport.com"); // Upload Process here }
Cuối cùng để chạy command trên chúng ta chạy thông qua artisan như sau:
php artisan upload_file
Kết quả:
Các tham số của Artisan Command
Để truyền các tham số vào Artisan Command chúng ta có các loại sau:
Option bắt buộc
protected $signature = 'order:check {param}';
Option tuỳ chọn
protected $signature = 'order:check {param?}';
Option với dữ liệu mặc định
protected $signature = 'order:check {param=foo}';
Để lấy giá trị Option truyền vào thì trong phương thức handle() chúng ta gọi ra:
$param = $this->option('param');
Để lấy all giá trị Options
$options = $this->options();
Nguồn: vinasupport.com