我可以用这段代码在命令中获取参数:
$this->argument();
但是如何从外部获取参数呢?
如果我查看 argument() 函数的源代码,我会看到:
public function argument($key = null)
{
if (is_null($key)) {
return $this->input->getArguments();
}
return $this->input->getArgument($key);
}
我想检测命令“php artisan migrate:refresh --seed”何时运行,因为我希望模型中的某些代码在本地主机环境中运行,但在播种期间不在本地主机环境中运行...
最佳答案
laravel 获取命令参数的机制非常复杂。我可以使用\App::runningInConsole() 检测应用程序是否在控制台中运行,但是没有函数可以获取参数,例如:
if(\App::runningInConsole()){
$args = \App::getConsoleArguments(); // doesn't exist :(
}
但是 $_SERVER['argv'] 在这里很有用,当“php artisan migrate:refresh --seed”在 $_SERVER['argv'] 中运行时是这个数组:
Array
(
[0] => artisan
[1] => migrate:refresh
[2] => --seed
)
所以我可以使用这段代码:
if( ! empty($_SERVER['argv'][2] ) && $_SERVER['argv'][2] == '--seed'){
//
}
关于php - 如何在命令之外获取 laravel 命令参数,例如在服务提供商?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41830168/