命令行
如果我们开发的FastAdmin插件有也命令行脚本的需求,我们按照以下的方式来实现一个自定义命令行的功能。
标准命令模块
首先在我们的插件目录addons/mydemo下创建一个文件夹command,如addons/mydemo/command,然后创建一个命令行的实现类addons/mydemo/command/Mydemo.php,代码如下:
<?php
namespace addons\mydemo\command;
use think\console\Command;
use think\console\Input;
use think\console\Output;
class Mydemo extends Command
{
protected function configure()
{
$this->setName('mydemo')
->setDescription("介绍提示")
->addOption('param1', 't', Option::VALUE_REQUIRED, '必选参数介绍', null)
->addOption('param2', 'c', Option::VALUE_OPTIONAL, '可选参数介绍', null);
}
/*
* 逻辑处理
*/
protected function execute(Input $input, Output $output)
{
$param1 = $input->getOption('param1');
$param2 = $input->getOption('param2');
//逻辑处理
$output->writeln("done");
}
}
然后我们需要修改插件目录下的addons/mydemo/Mydemo.php,添加行为方法appInit
<?php
namespace addons\mydemo;
use app\common\library\Menu;
use think\Addons;
use think\Loader;
/**
* 插件
*/
class Mydemo extends Addons
{
......
/**
* 应用初始化
*/
public function appInit()
{
if (request()->isCli()) {
\think\Console::addDefaultCommands([
'addons\mydemo\command\Mydemo'
]);
}
}
}最后在后台管理右上角点击清除插件缓存后,我们就可以在命令行中使用php think看到我们的记录了,同时可以使用以下的方法来执行逻辑
php think mydemo --param1=abc --param2=def
php think mydemo -t abc -c def因为param1为必选项,所以如果我们执行php think mydemo则会报错。
多命令任务模块
我们已经可以创建通过上方的文档来创建标准任务模块,如果我们有多个命令行任务模块,可以通过在setName中添加:来区分,如:
$this->setName('mydemo:task1')
->setDescription("介绍提示")
->addOption('param1', 't', Option::VALUE_REQUIRED, '必选参数介绍', null)
->addOption('param2', 'c', Option::VALUE_OPTIONAL, '可选参数介绍', null);然后使用以下命令来执行即可:
php think mydemo:task1 --param1=abc --param2=def温馨提示
名称标识只支持使用插件标识和插件标识:自定义
添加命令行功能后务必后台右上角清缓存
更多命令行的文档请参考ThinkPHP5官方文档:https://www.kancloud.cn/manual/thinkphp5/122951
文档最后更新时间:2025-07-10 11:52:57
著作权归应用插件开发者所有,未经许可,禁止转载、复制此文档的任何内容。
未解决你的问题?请到「问答社区」反馈你遇到的问题