繁体   English   中英

如何从Laravel 4中通过artisan命令调用的类方法输出信息文本

[英]How to output info text from class method invoked via artisan command in Laravel 4

我在Laravel主应用程序以及通过artisan命令中使用了几个类(服务)。

我想做的是能够通过artisan调用此类方法时显示一些输出(例如命令本身内的$this->info(...) ),并最终返回一个值(响应,结果对象或类似内容) )在主应用程序中使用它们时。

现在,我只是将它们用作命令,并通过直接从方法内部echo我需要的语句来达到输出效果,但是我坚信这不是正确的方法,因为我猜想我一开始就在应用程序中使用它们我的响应将被这些信息语句污染(我想还有双重标题或类似问题)。

我想知道哪种更好的方法来解决这种情况。

下面是我要实现的代码示例:

// DoSequenceCommand

public function fire() {
    MyClass::doSequence();
}

// MyClass (Facade)

public function doSequence() {
    echo "Beginning Step 1\n"; // THIS I WOULD BE ABLE TO OUTPUT ONLY IF EXECUTED VIA COMMAND LINE
    $s1 = $this->step1();
    echo  "Step 1 " . ( $s1 ? "succeded" : "failed" ) . "!\n";

    echo "Beginning Step 2\n";
    $s2 = $this->step2();
    echo  "Step 2 " . ( $s2 ? "succeded" : "failed" ) . "!\n";

    return [ "s1" => $s1, "s2" => $s2];
}

您可以:

  • 将标志传递到doSequence()以确定是否应输出info语句
  • doSequenence()触发事件,并在您的命令中侦听事件以从那里输出信息
  • 将序列分解为多个函数,并在您的命令中与信息语句一起单独调用它们

事件选项可能是最干净的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM