【问题标题】:Get all Laravel artisan commands for interface获取接口的所有 Laravel artisan 命令
【发布时间】:2019-01-14 09:55:10
【问题描述】:

当您在命令行中使用php artisan 时,您将获得所有命令的列表。有没有机会以编程方式获取所有 Laravel 工匠命令?例如,我需要它在界面的选择字段中使用它。

【问题讨论】:

    标签: php laravel laravel-artisan


    【解决方案1】:

    获取所有命令对象:

    \Artisan::all()
    

    获取所有命令名称:

    array_keys(\Artisan::all())
    

    【讨论】:

    • 我可以从特定文件夹获取所有命令吗?我也可以得到所有有条件的命令吗?
    【解决方案2】:
    use Illuminate\Contracts\Console\Kernel;
    ...
    $commands = resolve(Kernel::class)->all();
    

    【讨论】:

    • 请编辑您的答案以添加对您的代码如何工作以及它如何解决 OP 问题的解释。很多 SO 发帖人都是新手,看不懂你贴的代码。
    【解决方案3】:

    使用 shell-exec 命令。 http://php.net/manual/en/function.shell-exec.php

    $output = shell_exec('php artisan');
    echo $output;
    

    【讨论】:

      【解决方案4】:

      如果我对查询的理解正确,您可以使用 CLI(例如 debian 中的 bash)来:

      1. && 用于单个调用 - 每个后续调用将在上一次表演之后进行,例如:

        php artisan migrate:fresh && php artisan fixtures:up && php artisan db:seed && php artisan serv

      2. 在 .bash_profile 中输入的别名

        alias migrate = "php artisan migrate"

      并在 Laravel 项目中使用命令 migrate

      信息:https://gist.github.com/JeffreyWay/5542264

      【讨论】:

        【解决方案5】:

        您可以像这样将它们放在您的路线中:

        Route::get('/foo', function()
        {
            $exitCode = Artisan::call('command:name', ['--option' => 'foo']);
        
        //
        });
        

        https://laravel.com/docs/5.0/artisan#calling-commands-outside-of-cli

        【讨论】:

          猜你喜欢
          • 2020-03-17
          • 2018-09-09
          • 2021-12-27
          • 1970-01-01
          • 2016-02-07
          • 1970-01-01
          • 2017-01-18
          • 2020-11-26
          • 2019-04-03
          相关资源
          最近更新 更多