命令行

如果我们开发的FastAdmin插件有也命令行脚本的需求,我们按照以下的方式来实现一个自定义命令行的功能。

mPtldiZUsVEgycQNVrz9UwWvdCG+At37iKv1rg==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

标准命令模块

TXdYKBbhnogHcNafsIQJMFbRPk/SodW2iBOmcw==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

首先在我们的插件目录addons/mydemo下创建一个文件夹command,如addons/mydemo/command,然后创建一个命令行的实现类addons/mydemo/command/Mydemo.php,代码如下:

SpNMUkxyBeraPALbrKwVLivRyyQxhYZ+XlZfHQ==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
<?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");
    }
}
ckanWbPSmsvUpHeLCynEpRpPkvP6zlzWkdlXLg==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

然后我们需要修改插件目录下的addons/mydemo/Mydemo.php,添加行为方法appInit

CkDVIjJUvZWLqnclG/Rm5myHJrdy3vVFAK9tsA==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
<?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'
            ]);
        }
    }
}
wuMmGokSnsFqeKLpuaKCrUYIUnDr2eQ05HQzUw==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

最后在后台管理右上角点击清除插件缓存后,我们就可以在命令行中使用php think看到我们的记录了,同时可以使用以下的方法来执行逻辑

uAyItaBzgLjiDTHF4VFVIiAoceozqevKsIIS3w==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
php think mydemo --param1=abc --param2=def
php think mydemo -t abc -c def
AHLJDcbQuzkePlnaQ65No5TsLmkXzXnP0iHGOA==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

因为param1为必选项,所以如果我们执行php think mydemo则会报错。

bEyPhpYfxUmaljzoOjYHOc384XyLWCHk+UO8XQ==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

多命令任务模块

toGbMNcHxRjACamy4BxZkf/2vBhs6L3HP3T7CQ==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

我们已经可以创建通过上方的文档来创建标准任务模块,如果我们有多个命令行任务模块,可以通过在setName中添加:来区分,如:

CiIopVxNaDOXwqvrzhM9zHV64EVMQ54emNPPUg==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
$this->setName('mydemo:task1')
            ->setDescription("介绍提示")
            ->addOption('param1', 't', Option::VALUE_REQUIRED, '必选参数介绍', null)
            ->addOption('param2', 'c', Option::VALUE_OPTIONAL, '可选参数介绍', null);
QTdqgpjbCuNEUYRyWGa6GwSxBwNAPMdNndbGLg==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

然后使用以下命令来执行即可:

IYzOcqPMDUNKBjiAsnI+WmY2+uOoH6QMZmcVXg==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。
php think mydemo:task1 --param1=abc --param2=def
zonhDOgMvcpqdyCQrDWwoMN4RrbRKH/S9YmL4Q==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

温馨提示

TXKpDxRiSMqbvwgUfbENWpAPyawZ5y7ZxHuRdQ==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

名称标识只支持使用插件标识插件标识:自定义
添加命令行功能后务必后台右上角清缓存
更多命令行的文档请参考ThinkPHP5官方文档:https://www.kancloud.cn/manual/thinkphp5/122951

gTPauJDcnZtHQNFEUGaz5jDB2gLiTrtUM3M3Fg==著作权归作者所有,未经许可,禁止转载、复制此文档的任何内容。

文档最后更新时间:2025-07-10 11:52:57
著作权归应用插件开发者所有,未经许可,禁止转载、复制此文档的任何内容。

文档
目录

深色
模式

切换
宽度