ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TP5 自定义命令详细命令行用法

2019-10-25 14:41:23  阅读:476  来源: 互联网

标签:定义 自定义 命令 TP5 命令行 input php think


很多时候需要使用命令行来执行php脚本,执行单独的php的脚本没有什么太大的问题,如果想要执行使用TP5框架项目的某个文件,可能会因相关文件无法加载而不能执行。

 好在TP5框架中有命令行的功能,我们可以使用TP5的命令行调用我们自定义的命令,从而操作TP5项目中的代码。

定义命令

 先简单的定义一个命令,建立一个命令行测试类:

namespace app\base\command;
use think\console\Command;
use think\console\Input;
use think\console\Output;

class Test extends Command
{
    protected function configure()
    {
        $this->setName('test');//定义命令的名字
    }

    protected function execute(Input $input, Output $output)
    {
        $output->writeln('Hello World');//在命令行界面输出内容
    }
}

现在来说一下这2个方法的功能:

 configure()
   用来设置自定义命令属性,可以配置命令名字、命令参数、命令选项、命令描述

 execute()
   用来设置执行命令的相关操作,通过Input,Output输入输出达到命令行和代码的交互。

配置命令

 设置完了自定义命令,还要在application/command.php中配置一下才行哦:

	return [
    	'app\base\command\Test'
	];

一个命令对应一个命令类,对应一个配置。也就是说想定义多个命令,就需要建立多个类文件,每个定义的命令都要在这里配置才能生效。

使用命令

 首先进入项目的根目录,然后打开cmd,先使用php think 命令可以看到:

在Available commands 这一栏里,看到我们刚才的定义的test命令。

 现在执行这个命令:

	php think test

可以看到返回:

	Hello World

这样我们定义的命令就使用成功了。


命令参数

 上面的命令似乎只能执行一些简单的操作,这次我们给命令添加几个参数,增加命令的功能性。

    protected function configure()
    {
        $this->setName('test')              		//定义命令的名字
        ->setDescription('This is my command')     //定义命令的描述
        ->addArgument('name')                      //增加一个名字参数
        ->addArgument('age');                      //增加一个年龄参数
    }

    protected function execute(Input $input, Output $output)
    {
        //获取输入的参数
        $name = $input->getArgument('name');
        $age = $input->getArgument('age');

        //输出获得的参数
        $output->writeln("My name is $name ,age is $age");
    }

 在命令行输入:

	php think test  wuhen  20

可以看到返回 :

	My name is wuhen,age is 20

命令选项
 我们的命令虽然可以传入参数了,不过可以增加 选项 进一步充分我们命令的功能。

	protected function configure()
    {
        $this->setName('calculate')              	    //定义命令的名字
            ->setDescription('This is my command')      //定义命令的描述
            ->addArgument('number1')                    //参数1
            ->addArgument('number2')                    //参数2
            ->addOption('add')                          //定义相加的选项
            ->addOption('sub');                         //定义相减的选项
    }

    protected function execute(Input $input, Output $output)
    {
        //获取输入的2个参数
        $number1 = $input->getArgument('number1');
        $number2 = $input->getArgument('number2');
		
		//加法操作
        if($input->hasOption('add')){
            $result = $number1 + $number2;
            $output->writeln("$number1 + $number2 = $result");
        }
		
		//减法操作
        if($input->hasOption('sub')){
            $result = $number1 - $number2;
            $output->writeln("$number1 - $number2 = $result");
        }
    }

在命令行输入:

	php think calculate 20 30 --add

 可以看到返回 :

  	20 + 30 = 50

 在命令行输入:

	 php think calculate 20 30 --sub
  •  

 可以看到返回:

	20 - 30 = -10

 

标签:定义,自定义,命令,TP5,命令行,input,php,think
来源: https://blog.csdn.net/weixin_41715751/article/details/102741861

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有