Console Command Trong Laravel Là Gì?

Console Command Trong Laravel Là Gì?
Đối với các bạn học hoặc làm dự án về Laravel, Console Command không có gì xa lạ. Vì Laravel có nhiều tính năng như lệnh Command để chúng ta thao dễ dàng và nhanh chóng.

Console Command là một phần của Artisan. Nó là giao diện được thêm vào Laravel và có chức năng cung cấp một số lệnh hỗ trợ các bạn lập trình xây dựng ứng dụng. Khung Symfony cung cấp rất nhiều lệnh thông qua dòng lệnh bin/console (ví dụ bin/console cache:clear khá nổi tiếng). Các lệnh này được tạo bằng thành phần Console. Các bạn cũng có thể sử dụng nó để tạo các dòng lệnh riêng cho dự án của các bạn.

 

Console Command chính xác là gì?

 

Console Command là một công cụ thiết yếu mà các bạn có thể sử dụng để giải quyết những vấn đề khó tháo gỡ. Để nhập Skyrim vào bảng điều khiển lệnh PC, bạn nhấn ~ hoặc phím trên Tab để hiển thị bảng điều khiển dành cho tất cả lập trình viên và nhập các mã như vậy để có hiệu ứng như mong đợi. Các lệnh điều khiển không phân biệt chữ in hoa hay chữ thường.

 

Làm thế nào để sử dụng Console Command?

 

Sử dụng Console Command siêu dễ luôn. Các bạn chạy Windows Run bằng cách giữ nút Windows và đồng thời nhấn nút R trên bàn phím. Tiếp theo, bạn nhập cmd và nhấn enter. Đừng quên mở Command Prompt ra. Nếu bạn không chắc nên sử dụng dòng lệnh nào, thì hãy tìm mục Trợ Giúp trong dấu nhắc lệnh. Bạn có thể sử dụng lệnh danh sách để xem tất cả các lệnh có sẵn trong ứng dụng. Nếu bạn tìm thấy lệnh mình cần, bạn có thể chạy lệnh đó với tùy chọn -help để xem tài liệu của lệnh.

 

APP_ENV và APP_DEBUG

 

Các lệnh console chạy trong môi trường được xác định trong biến APP_ENV của tập tin .env (thường mặc định là dev.). Nó cũng đủ khả năng đọc giá trị APP_DEBUG để mở hoặc tắt chế độ tháo gỡ lỗi (thường mặc định là 1, là mở).Để chạy lệnh trong môi trường này hoặc ở chế độ tháo gỡ lỗi khác, các bạn nên chỉnh sửa giá trị của APP_ENV và APP_DEBUG. Ngoài ra, bạn cũng có thể định nghĩa env vars khi chạy lệnh.

 

Command I/O trong Laravel

 

Khi Command của bạn được tiến hành, bạn sẽ cần truy cập vào các đối số và các tùy chọn được chấp nhận từ command của bạn. Để thực hiện điều đó, bạn nên sử dụng phương thức argument và option.

 

Truy xuất đầu vào

/**

 * Execute the console command.

 *

 * @return  mixed

 */

public function handle()

{

    $userId = $this->argument('user');

    //

}

 

Nếu bạn phải lấy toàn bộ argument như một array, thì hãy gọi phương thức arguments.

 

$arguments = $this->arguments();

 

Để lấy tất cả option như một array, thì bạn dùng phương thức options.

 

// Retrieve a specific option...

$queueName = $this->option('queue');

// Retrieve all options...

$options = $this->options();

 

Nếu option hoặc argument không tồn tại, thì hệ thống tự động trả về null.

 

Nhắc nhở đầu vào

Ngoài chuyện hiển thị output, bạn có thể yêu cầu người dùng cung cấp cho input trong khi thực hiện command. Phương thức ask là phù hợp để nhắc nhở người dùng kèm câu hỏi được đưa ra. Đồng thời, nó chấp nhận input của họ và tự động trả về input của người dùng trở lại command của bạn.Tương tự như phương thức ask, các phương thức secret cũng có tính năng giống vậy. Tuy nhiên, input của người dùng sẽ được ẩn khi họ gõ vào Console. Phương thức secret hữu ích khi các bạn yêu cầu thông tin nhạy cảm (ví dụ như mật khẩu).

 

Yêu cầu xác nhận

Nếu bạn cần xác nhận một số thông tin từ người dùng, thì bạn dùng phương thức confirm. Thông thường, phương thức confirm sẽ trả về false. Tuy nhiên, nếu người dùng nhập vào Yes hoặc Y thì phương thức confirm sẽ trả về true. 

 

Tự động hoàn thành

Phương thức anticipate cung cấp các tính năng tự hoàn thiện các lựa chọn. Khi đó, người dùng vẫn có thể chọn bất cứ câu hỏi nào và bất kể gợi ý của auto-completion.

 

Đầu ra

Để gửi output tới Console, các bạn nên sử dụng các phương thức: line, info, comment, question và error. Mỗi phương thức sẽ sử dụng màu sắc ANSI phù hợp với mục đích từng lệnh (Ví dụ hiển thị một số thông tin chung cho người dùng). Phương thức info sẽ hiển thị trong Console với text màu xanh lá cây, ví dụ thực tế như vậy. Còn với error message, các bạn dùng phương thức error. Error message thường hiển thị màu đỏ.

 

$this->error('Something went wrong!');

 

Nếu muốn hiển thị đơn giản đến mức không màu ở Console Output, thì hãy sử dụng phương thức line.

 

$this->line('Display this on the screen');

 

Bố cục bảng

Phương thức table giúp định dạng chính xác nhiều cột và nhiều hàng trong một tập dữ liệu. Bạn chỉ cần đặt phương thức này trong header và row của nó là xong. Chiều rộng và chiều cao khi đó sẽ tự động tính toán dựa trên dữ liệu đã đưa ra trước đó.

 

$headers = ['Name', 'Email'];

$users = App\User::all(['name', 'email'])->toArray();

$this->table($headers, $users);

 

Các thanh công cụ tiến hành

Đối với các task phải chạy dài, Console Command hữu ích để hiển thị toàn bộ tiến trình chạy. Khi sử dụng các output object, các bạn có thể khởi động, nâng cao quy trình và ngưng thanh tiến trình. Đầu tiên, hãy xác định tổng số các bước quá trình sẽ phải chạy. Sau đó, các bạn nâng cao bar progress mỗi khi chạy qua một mục.

 

$users = App\User::all();

$bar = $this->output->createProgressBar(count($users));

foreach ($users as $user) {

    $this->performTask($user);

    $bar->advance();

}

$bar->finish();

 

Đăng ký Commands

Khi Command của bạn đã xong, bạn phải đăng ký nó với Artisan. Tất cả Command cần được đăng ký trong file app/Console/Kernel.php. Trong file này, bạn sẽ thấy một danh sách các Command trong commands property. Để đăng ký command của bạn, bạn chỉ cần bổ sung tên Class của command vào trong danh sách. Khi khởi động thủ công, toàn bộ các lệnh được liệt kê ở property sẽ được xử lý từ các service container và có đăng ký với Artisan.

 

protected $commands = [

    Commands\SendEmails::class

];

 

Thực thi các lệnh theo chương trình

 

Đôi khi bạn có thể thực hiện một lệnh Artisan ngoài CLI. Ví dụ bạn muốn đưa ra một lệnh Artisan command từ một route hoặc controller nào đó.Khi đó, bạn sử dụng phương thức call trên Artisan façade để thực hiện. Phương thức call chấp nhận tên của command như argument và một array các tham số của command là argument thứ nhì. Exit code sẽ được trả lại.

 

Route::get('/foo', function () {

    Artisan::queue('email:send', [

        'user' => 1, '--queue' => 'default'

    ]);

    //

});

 

Nếu cần phải xác định giá trị của một lựa chọn mà không chấp nhận các string value (giống như force flag trên migrate:refresh command), thì bạn có thể pass true hoặc false.

 

$exitCode = Artisan::call('migrate:refresh', [

    '--force' => true,

]);

Hồ Hữu Hiền

Mình là developer nên đôi khi viết bài không hay lắm mong các bạn thông cảm. Nếu muốn biết thêm thông tin về mình thì vui lòng vào website này để biết. https://huuhienqt.dev/

Bình luận (0)