【问题标题】:Laravel 6: Get console parameter options outside a command classLaravel 6:在命令类之外获取控制台参数选项
【发布时间】:2019-11-08 22:58:31
【问题描述】:

我希望能够在 Laravel 6 的控制台命令类之外获取控制台参数。

在命令类中你通常会这样做:

$this->argument('tenant');

但是,当然,这仅在您所在的课程扩展 Command 时才有效。

我解决这个问题的方法如下:

if (App::runningInConsole()) {
    $input = new ArgvInput();
    $tenant = $input->getParameterOption('--tenant');
    if ($tenant !== null && $tenant !== false) {
        $tenant = ltrim($tenant, '='); // remove first equals
    }
}

但是,这似乎是一种实现这一目标的 hacky 方式。有没有更好的解决方案?

【问题讨论】:

  • if 块在哪里?在另一个班级里?为什么不在该类的构造函数中传递参数?
  • AppServiceProvider,所以不能作为参数传递
  • 如果您稍后尝试使用 --tenant 获取它,它将是 $this->option('tenant');

标签: php laravel laravel-6


【解决方案1】:

如果您希望通过--tenant={id} 之类的选项传递一个值,那么您可以这样做:

use Symfony\Component\Console\Input\ArgvInput;

$tenant = (new ArgvInput())->getParameterOption('--tenant');

如果您希望选项像 --force 这样的标志,那么您可以这样做:

use Symfony\Component\Console\Input\ArgvInput;

$force = (new ArgvInput())->hasParameterOption('--force');

【讨论】:

    猜你喜欢
    • 2017-10-19
    • 2012-06-21
    • 2015-11-06
    • 1970-01-01
    • 2017-05-31
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多