很多时候需要使用命令行来执行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