ThinkPHP如何在控制器中调用命令

前段时间因为业务需求,使用TP的command开发了几个模块,期间测试一下在控制器中调用命令的方式,发现一些问题记录一下

官方文档:

 1 <?php
 2 namespace app\index\controller;
 3 
 4 use think\Console;
 5 use think\Controller;
 6 
 7 class Index extends Controller
 8 {
 9     public function hello($name)
10     {
11         $output = Console::call('hello ' . $name);
12 
13         return $output->fetch();
14     }
15 }

实际测试中该方式不可用,仅能调用命令无法实现传参,经过测试如下调用即可:

<?php

namespace app\home\controller;

use think\Console;

class Index
{
    public function index()
    {
        // 调用命令行的指令
        $output = Console::call('app:demo', ['--num', '10', 'kitty']);
        // 获取输出信息
        return $output->fetch();
    }
}

Console::call 方法的第一个参数是指令名称,后面的第二个参数是一个数组,表示调用的参数, 参数与命令行输入相对应。

使用 Console::call 方法调用指令执行不会看到最终的输出结果,需要使用 fetch 方法获取输出信息,一旦发生错误,则会抛出异常。

 

作者:旧旧的 <393210556@qq.com> 解决问题的方式,就是解决它一次

posted @ 2019-08-26 10:50  WidgetBox  阅读(1966)  评论(0编辑  收藏  举报