以编程方式获取 artisan 命令签名

Get artisan command signature programmatically

我正在尝试从我的控制器获取 Laravel 中自定义命令的一些信息,但我不知道使用哪种方法获取命令签名或命令的其他信息。实际上,我有一个带有命令列表的select框,选择一个选项时,我的代码在back-end will 运行 and return select在文本区域显示。

我已阅读this question。 我也有 google laravel 来源,但找不到 artisan 方法来源的位置。

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. 在哪里可以找到 artisan 命令方法源代码?

据我所知,您是正确的,Laravel 命令不提供 getter 签名。作为替代方案,您可以查看以下解决方法。

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

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

  1. 如果这不适合您,您可以实施和扩展您自己的 CommandWithSignature(或 SignatureAwareTrait),它公开了一个 getSignature() 方法。
public class CommandWithSignature {
    protected $signature;

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