前段時間因為業務需求,使用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> 解決問題的方式,就是解決它一次