## 命令行
如果我們開發的`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官方文檔:http://www.hmoore.net/manual/thinkphp5/122951