• tp5自定义命令


    创建自定义命令行:

    1.首先是注册cammand:

    application/cammand:

    <?php
    return [
        'appcommoncommandChat',
    ];

    2.创建类,继承Cammand:

    <?php
    
    
    namespace appcommoncommand;
    
    
    use thinkconsoleCommand;
    
    class Chat extends Command
    {
        protected function configure()
        {
            $this->setName('chat')->setDescription('Here is the remark ');
        }
    
        protected function execute(Input $input, Output $output)
        {
            $output->writeln("TestCommand:");
        }
    
    }

    下面说一下参数的含义

    首先configure 和execute这两个是必须存在的.


    configure是配置信息:

    其中setName 标识的php  think 后面紧跟的命令名

    自定义命令行还支持传递参数和可选选项

    php  think chat start  --restart

    其中start为参数,必须要输入的,在configure中配置为:

    ->addArgument('number1')

    执行的是时候调用execute里面的

    $input->getArgument('number1')  获取用户输入的参数,

    setDescription: 这个是执行php think list 展示的简述,类似的还有

    ->setHelp("这个是使用--help时展示的信息");

    getArgument()方法是有默认值的,不止一个参数,下面是tp的框架代码

    /**
         * 添加参数
         * @param string $name        名称
         * @param int    $mode        类型,
         * @param string $description 描述
         * @param mixed  $default     默认值
         * @return Command
         */
        public function addArgument($name, $mode = null, $description = '', $default = null)
        {
            $this->definition->addArgument(new Argument($name, $mode, $description, $default));
    
            return $this;
        }

    其中$mode:

    参数类型: self::REQUIRED 或者 self::OPTIONAL

    required常量值为1,

    optional 常量值2

    他们标识的是是否必须

    示例:

    ->addArgument('action', Argument::OPTIONAL, "start|stop|restart|reload", 'start')

    其中action 作为execute获取参数的键, Argument::OPTIONAL是$mode的值,表示非必填项,第三个是提示描述,最后一个是默认值,默认传递的start


    下面是可以选选项的使用

    在configure方法里:

    ->addOption('restart')

    在执行execute里通过

    if($input->hasOption('restart')){
      //执行里面的里面的逻辑
    }

    同理下面是tp框架的代码:

        /**
         * 添加选项
         * @param string $name        选项名称
         * @param string $shortcut    别名
         * @param int    $mode        类型
         * @param string $description 描述
         * @param mixed  $default     默认值
         * @return Command
         */
        public function addOption($name, $shortcut = null, $mode = null, $description = '', $default = null)
        {
            $this->definition->addOption(new Option($name, $shortcut, $mode, $description, $default));
    
            return $this;
        }

    示例:

    ->addOption('daemon', 'd', Option::VALUE_NONE, '该进程已后台运行')

    daemon 是execute获取options时的键,d,是别名

    同理$mode标识的是是否必须,

    第三个参数是描述

    第四个是默认值,

    只有第一个是必须的参数,其他均为可选,跟addArguments一致.


    在命令行输出数据:

    下面是一些可以使用颜色的输出

    // 红色背景上的白字
    $output->writeln('<error>white text on a red background</error>');
    
    // 绿字
    $output->writeln('<info>green text</info>');
     
    // 黄字
    $output->writeln('<comment>yellow text</comment>');
    
    // 黄色色背景上的黑字
    $output->writeln('<warning>black text on a yellow background</warning>');
     
    // 青色背景上的黑字
    $output->writeln('<question>black text on a cyan background</question>');
     
    // 红背景上的白字
    $output->writeln('<error>white text on a red background</error>');
    
    // 支持混合输出
    $output->writeln('<info>green text</info><question>black text on a cyan background</question>......');

    通过控制器去触发命令行操作

    // 调用命令行的指令
    $output = Console::call('app:demo', ['--num', '10', 'kitty']);

    tp命令行还可以做一些简单的判断

    //execute方法内
    $question = $output->confirm($input, '是否继续操作?', false);
     if (!$question) {
                return;
     }
  • 相关阅读:
    20165331 第五周学习总结
    第二次测试补做
    20165331 《Java程序设计》第四周学习总结
    2018-2019-1 20165237 《信息安全系统设计基础》第二周学习总结
    2018-2019-1 20165237 《信息安全系统设计基础》第一周学习总结
    20165237 2017-2018-2《Java程序设计》课程总结
    2017-2018-2 20165237 实验五《网络编程与安全》实验报告
    2017-2018-2 20165237 实验四《Android开发基础》实验报告
    20165237 2017-2018-2 《Java程序设计》第十周考试补做及编程题
    2017-2018-2 20165237 实验三《 敏捷开发与XP实践》实验报告
  • 原文地址:https://www.cnblogs.com/callmelx/p/11529152.html
Copyright © 2020-2023  润新知