【发布时间】: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');。