以编程方式获取工匠命令签名

时间:2019-07-11 03:42:03

标签: laravel command artisan

我正在尝试从控制器中获取Laravel中我的自定义命令的一些信息,但是我不知道哪种方法可以获取命令签名或其他命令信息。实际上,我有一个带有命令列表的选择框,选择一个选项时,我的后端代码将运行并返回选择的命令信息,然后显示在textarea上。

我已阅读this question。 我也用google laravel源代码,但找不到工匠方法源代码放在哪里。

foreach(Artisan::all() as $key=>$command)
{
 echo $command->getDescription(); // show description
 echo $command->getName(); // show name
 echo $command->getSignature(); // error because this method doesn't exist.
}
  1. 是否有获取命令签名或其他信息的方法?
  2. 在哪里可以找到工匠命令方法的来源?

1 个答案:

答案 0 :(得分:1)

根据我的理解,您是正确的,Laravel命令没有提供签名的获取器。或者,您可以研究以下解决方法。

  1. 您可以使用$name作为签名。
protected $name = 'app:do:something';

我不确定这是否是常见(或最佳)做法,但似乎可以解决问题。

  1. 如果这样做不适合您,则可以实现并扩展自己的CommandWithSignature(或SignatureAwareTrait),该方法公开了getSignature()方法。
public class CommandWithSignature {
    protected $signature;

    public function getSignature(): string
    {
        return $this->signature;
    }
}