## 命令行
如果我们开发的`FastAdmin`插件有也命令行脚本的需求,我们按照以下的方式来实现一个自定义命令行的功能。
### 标准命令模块
首先在我们的插件目录`addons/mydemo`下创建一个文件夹`command`,如`addons/mydemo/command`,然后创建一个命令行的实现类`addons/mydemo/command/Mydemo.php`,代码如下:
~~~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
<?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`看到我们的记录了,同时可以使用以下的方法来执行逻辑
~~~python
php think mydemo --param1=abc --param2=def
php think mydemo -t abc -c def
~~~
因为`param1`为必选项,所以如果我们执行`php think mydemo`则会报错。
### 多命令任务模块
我们已经可以创建通过上方的文档来创建标准任务模块,如果我们有多个命令行任务模块,可以通过在`setName`中添加`:`来区分,如:
~~~php
$this->setName('mydemo:task1')
->setDescription("介绍提示")
->addOption('param1', 't', Option::VALUE_REQUIRED, '必选参数介绍', null)
->addOption('param2', 'c', Option::VALUE_OPTIONAL, '可选参数介绍', null);
~~~
然后使用以下命令来执行即可:
~~~sql
php think mydemo:task1 --param1=abc --param2=def
~~~
### 温馨提示
名称标识只支持使用`插件标识`和`插件标识:自定义`
添加命令行功能后务必后台右上角清缓存
更多命令行的文档请参考ThinkPHP5官方文档:https://www.kancloud.cn/manual/thinkphp5/122951