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ả.