【问题标题】:Get artisan command signature programmatically以编程方式获取工匠命令签名
【发布时间】:2019-11-20 17:01:02
【问题描述】:

我正在尝试从我的控制器获取我在 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. 在哪里可以找到工匠命令方法源?

【问题讨论】:

    标签: laravel command laravel-artisan


    【解决方案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;
        }
    }
    

    【讨论】:

    • 我刚刚使用了 trait 方法,效果很好,谢谢!
    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多