🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 命令行 如果我们开发的`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