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> 解決問題的方式,就是解決它一次


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM