Tạo và sử dụng lệnh tùy chỉnh trong ThinkPHP 5.0

Trong ThinkPHP 5.0, bạn có thể xây dựng các lệnh dòng lệnh (CLI) tùy chỉnh để thực hiện các tác vụ tự động như xử lý dữ liệu nền, chạy cronjob hoặc khởi tạo hệ thống. Dưới đây là hướng dẫn chi tiết cách tạo và cấu hình lệnh CLI trong môi trường TP5.

Tạo lớp lệnh cơ bản

Đầu tiên, tạo một lớp lệnh trong thư mục app/base/command. Ví dụ: tạo file Test.php với nội dung sau:

<?php
namespace app\base\command;

use think\console\Command;
use think\console\Input;
use think\console\Output;

class Test extends Command
{
    protected function configure()
    {
        $this->setName('demo:test');
    }

    protected function execute(Input $input, Output $output)
    {
        $output->writeln('Chào mừng đến với lệnh CLI!');
    }
}
    

Hai phương thức chính cần biết:

  • configure(): Dùng để thiết lập tên lệnh, mô tả, tham số và tùy chọn.
  • execute(): Chứa logic xử lý khi lệnh được thực thi, dùng Input để nhận dữ liệu và Output để xuất kết quả ra terminal.

Đăng ký lệnh trong hệ thống

Sau khi tạo xong lớp lệnh, cần đăng ký nó trong file application/command.php:

<?php
return [
    'app\base\command\Test'
];
    

Mỗi lệnh tương ứng với một lớp và phải được khai báo tại đây để có hiệu lực. Sau đó, từ thư mục gốc dự án, chạy lệnh:

php think

để xem danh sách tất cả các lệnh khả dụng.

Thực thi lệnh vừa tạo:

php think demo:test

Kết quả sẽ hiển thị: Chào mừng đến với lệnh CLI!

Thêm tham số cho lệnh

Bạn có thể truyền tham số vào lệnh để tăng tính linh hoạt. Ví dụ:

protected function configure()
{
    $this->setName('user:info')
         ->setDescription('Hiển thị thông tin người dùng')
         ->addArgument('ten')
         ->addArgument('tuoi');
}

protected function execute(Input $input, Output $output)
{
    $ten = $input->getArgument('ten');
    $tuoi = $input->getArgument('tuoi');
    $output->writeln("Xin chào $ten, bạn $tuoi tuổi.");
}
    

Chạy lệnh:

php think user:info An 25

Kết quả: Xin chào An, bạn 25 tuổi.

Sử dụng tùy chọn (option)

Tùy chọn giúp người dùng lựa chọn hành vi thực thi. Ví dụ tạo lệnh tính toán:

protected function configure()
{
    $this->setName('calc')
         ->setDescription('Tính toán cộng/trừ')
         ->addArgument('a')
         ->addArgument('b')
         ->addOption('cong', null, null, 'Thực hiện phép cộng')
         ->addOption('tru', null, null, 'Thực hiện phép trừ');
}

protected function execute(Input $input, Output $output)
{
    $a = (int)$input->getArgument('a');
    $b = (int)$input->getArgument('b');

    if ($input->hasOption('cong')) {
        $ketqua = $a + $b;
        $output->writeln("$a + $b = $ketqua");
    }

    if ($input->hasOption('tru')) {
        $ketqua = $a - $b;
        $output->writeln("$a - $b = $ketqua");
    }
}
    

Thực thi:

php think calc 10 7 --cong

→ Kết quả: 10 + 7 = 17

php think calc 10 7 --tru

→ Kết quả: 10 - 7 = 3

Tùy chọn có giá trị mặc định

Bạn cũng có thể thiết lập giá trị mặc định cho tùy chọn. Ví dụ:

use think\console\InputOption as Option;

protected function configure()
{
    $this->setName('serve')
         ->addOption(
             'port',
             'p',
             Option::VALUE_OPTIONAL,
             'Cổng máy chủ',
             8080
         );
}

protected function execute(Input $input, Output $output)
{
    $port = $input->getOption('port');
    $output->writeln("Khởi động server tại cổng: $port");
}
    

Chạy lệnh:

php think serve

Khởi động server tại cổng: 8080

php think serve --port=9000

Khởi động server tại cổng: 9000

Với cơ chế này, bạn có thể xây dựng các công cụ CLI mạnh mẽ để hỗ trợ phát triển và vận hành ứng dụng ThinkPHP 5.0 một cách hiệu quả.

Thẻ: ThinkPHP5 command line CLI php console command

Đăng vào ngày 15 tháng 9 lúc 20:29